一尘不染

检查路径是文件还是目录的更好方法?

c#

我正在处理TreeView目录和文件。用户可以选择文件或目录,然后对其进行操作。这就要求我有一种根据用户的选择执行不同动作的方法。

目前,我正在执行以下操作来确定路径是文件还是目录:

bool bIsFile = false;
bool bIsDirectory = false;

try
{
    string[] subfolders = Directory.GetDirectories(strFilePath);

    bIsDirectory = true;
    bIsFile = false;
}
catch(System.IO.IOException)
{
    bIsFolder = false;
    bIsFile = true;
}

我不禁感到有更好的方法可以做到这一点!我希望找到一种标准的.NET方法来处理此问题,但我一直未能做到。是否存在这种方法,如果不存在,那么确定路径是文件还是目录的最直接方法是什么?


阅读 365

收藏
2020-05-19

共1个答案

一尘不染

如何判断路径是文件还是目录

// get the file attributes for file or directory
FileAttributes attr = File.GetAttributes(@"c:\Temp");

//detect whether its a directory or file
if ((attr & FileAttributes.Directory) == FileAttributes.Directory)
    MessageBox.Show("Its a directory");
else
    MessageBox.Show("Its a file");

.NET 4.0+的更新

根据下面的评论,如果您使用的是.NET 4.0或更高版本(并且最高性能并不关键),则可以采用一种更简洁的方式编写代码:

// get the file attributes for file or directory
FileAttributes attr = File.GetAttributes(@"c:\Temp");

if (attr.HasFlag(FileAttributes.Directory))
    MessageBox.Show("Its a directory");
else
    MessageBox.Show("Its a file");
2020-05-19