如果路径不存在,如何检查字符串路径是"文件"还是"目录"?

Enu*_*umy 6 c# io

我有一个函数,Path通过确定String Path是a File还是a来自动创建指定的Directory.

通常情况下,我会使用此路径已经exists:

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

if ((attributes & FileAttributes.Directory) == FileAttributes.Directory)
    {
        Directory.CreateDirectory("//Path");
    }
Run Code Online (Sandbox Code Playgroud)

但如果不是呢?如何检查是否String PathFileDirectory如果它不存在呢?

Car*_*ter 6

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

注意:在Windows中使用目录中的句点是合法的,但这主要是为了跨文件的跨操作系统兼容性而引入的.在严格的Windows环境中,将文件没有扩展名或在目录名中放置句点或空格被认为是不好的形式.如果您不需要考虑该方案,那么您可以使用此方法.如果不是,您将不得不通过链或结构发送某种标志以识别字符串的意图.

var ext = System.IO.Path.GetExtension(strPath);
if(ext == String.Empty)
{
    //Its a path
}
Run Code Online (Sandbox Code Playgroud)

如果您不需要对文件类型进行任何分析,您可以像下面这样简单:

if(System.IO.Path.HasExtension(strPath))
{
    //It is a file
}
Run Code Online (Sandbox Code Playgroud)

  • +0:注意:虽然这种方法可能适用于OP,但这是错误的:文件夹名称没有限制,不包括点.有一个名为"MyImages.jpg"或"Game.Saves"的文件夹是完全可以的. (3认同)
  • 稍微修改为`Boolean Extention = System.IO.Path.HasExtension("// Path")` (2认同)
  • 如果文件没有扩展名,此方法将不起作用 (2认同)