我正在考虑制作一个更"高级"的System.IO.Path
,System.IO.File
和System.IO.Directory
版本。
显然我从System.IO.Path
开始,因为文件和目录的基础将是 Path,我开始编写一个名为ContainsInvalidChars
的函数(检查所述路径是否包含无效字符),为此我不得不使用GetDirectoryName
&GetFileName
但是,在编写了这两个方法后,我停下来对自己说:
这两种方法如何区分输入路径是目录、文件还是目录 + 文件"。我进行了几次测试,发现它们没有。例如,如果你有类似C:\Users\UserName\AppData
的东西,你要把它放到GetFileName
它会返回AppData
即使 thoAppData
是一个文件夹,技术上应该是目录的一部分,文件名应该是 null,与GetDirectoryName
相同,即使AppData
是目录名称的一部分,它也只返回C:\Users\UserName
。所以我得出的结论是,我首先必须编写一个适当的GetFileName
和GetDirectoryName
方法,然后只写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();