如何在 C# 中获取文件/文件夹类型?



我正在考虑制作一个更"高级"的System.IO.PathSystem.IO.FileSystem.IO.Directory版本。

显然我从System.IO.Path开始,因为文件和目录的基础将是 Path,我开始编写一个名为ContainsInvalidChars的函数(检查所述路径是否包含无效字符),为此我不得不使用GetDirectoryName&GetFileName但是,在编写了这两个方法后,我停下来对自己说:

这两种方法如何区分输入路径是目录、文件还是目录 + 文件"。我进行了几次测试,发现它们没有。例如,如果你有类似C:\Users\UserName\AppData的东西,你要把它放到GetFileName它会返回AppData即使 thoAppData是一个文件夹,技术上应该是目录的一部分,文件名应该是 null,与GetDirectoryName相同,即使AppData是目录名称的一部分,它也只返回C:\Users\UserName。所以我得出的结论是,我首先必须编写一个适当的GetFileNameGetDirectoryName方法,然后只写ContainsInvalidChars。问题仍然存在,我如何区分 3 种类型的路径。在考虑这个问题时,当我注意到(很容易忽略的东西)显示文件/文件夹类型的Type列时,我开始在我的计算机上寻找几个文件,如果文件夹然后File folder如果文件(即使没有扩展名)(Ext) File,我在这里。有没有办法在 C# 中获取文件/文件夹类型?

我知道在一天结束时你总是可以写C:\Users\UserName\AppData\,是的,这将是DIR="C:\Users\UserName\AppData"和FILE=",但我知道有些人不会在最后写\,只是写C:\Users\UserName\AppData

System.IO提供了函数:File.Exists(string Path)Directory.Exists(string Path).根据 Path 的值返回布尔值

if (Directory.Exists(@"C:UsersUserNameAppData"))
Console.WriteLine("Folder exists");
else
Console.WriteLine("Path might be of file");

Ouput:
Folder exists

如果您使用的是 .NET 4.0 及更高版本,那么可以使用以下代码来执行此操作。

File.GetAttributes("your path to directory or file").HasFlag(FileAttributes.Directory)

但请确保路径有效。

您也可以使用

File.Exists();
Directory.Exists(); 

最新更新