C# 如何检查字符串路径是否为';文件';或';目录';如果路径不存在';不存在?

C# 如何检查字符串路径是否为';文件';或';目录';如果路径不存在';不存在?,c#,io,C#,Io,我有一个函数,通过确定字符串路径是文件还是目录,自动创建指定的路径 通常,如果路径已经存在,我会使用它: FileAttributes attributes = File.GetAttributes("//Path"); if ((attributes & FileAttributes.Directory) == FileAttributes.Directory) { Directory.CreateDirectory("//Path"); } 但如果

我有一个函数,通过确定
字符串路径
文件
还是
目录
,自动创建指定的
路径

通常,如果路径已经存在,我会使用它:

FileAttributes attributes = File.GetAttributes("//Path");

if ((attributes & FileAttributes.Directory) == FileAttributes.Directory)
    {
        Directory.CreateDirectory("//Path");
    }

但如果没有呢?如何检查
字符串路径
是否为
文件
目录
(如果不存在)?

如果场景中的文件必须具有扩展名,则可以使用此方法

注意:在windows中,在目录中使用句点是合法的,但这主要是为了文件的跨操作系统兼容性。在严格的windows环境中,如果文件没有扩展名,或者在目录名中添加句点或空格,则被认为是不好的形式。如果您不需要考虑该场景,那么可以使用此方法。如果不是,则必须通过链或结构发送某种标志,以标识字符串的意图

var ext = System.IO.Path.GetExtension(strPath);
if(ext == String.Empty)
{
    //Its a path
}
如果不需要对文件类型进行任何分析,您可以执行以下简单操作:

if(System.IO.Path.HasExtension(strPath))
{
    //It is a file
}

简单的回答是,单凭路径无法100%区分文件夹和文件。文件不必有文件扩展名,文件夹的名称中可以有句点(使其看起来像文件扩展名)。

file.Exists
Directory.Exists
是否检查甚至不存在的内容?如果要检查给定名称是否为有效文件名,只需检查其是否具有扩展名,如果没有扩展名,则可能是目录。是的,我想将
路径
视为
字符串
,并检查该
字符串
是否表示
文件
路径类型或
目录
路径类型path@Hossam,目录的名称可以类似于
File1.xml
,您无法检查字符串是目录还是文件。你需要重新思考你想做什么。您可以将没有扩展名的字符串视为目录。但在操作系统端并没有这样的限制。类似地,操作系统允许文件名不带任何扩展名,例如,
Directory1
是有效的文件名。检查它的一种方法是,如果您的路径以
/
结尾,这意味着该路径显式指向一个目录。但同样地,您可以在路径末尾没有
/
,它仍然可以指向一个目录。@MetroSmurf我不能使用
File.Exists
directory.Exists
,如果实际上没有什么需要检查的话,只需对
布尔扩展名=System.IO.Path.HasExtension(//Path)进行一点修改即可
+0:注意:虽然这种方法可能适用于OP,但它是错误的:对于不包含dot的文件夹名称没有任何限制。拥有名为“MyImages.jpg”或“Game.Saves”的文件夹是完全可以的。@AlexeiLevenkov这是
应用程序使用所必需的,并且不涉及
用户
,至于
目录
不可能包含
扩展
signature@AlexeiLevenkov不过,你的观点毫无意义。System.IO.Path.GetExtension足够智能,可以从字符串的末尾开始,并确定在第一个目录分隔符之前是否有扩展名。如果文件必须有扩展名,此方法可以正常工作。如果文件没有扩展名,此方法将不起作用