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

时间:2018-07-14 13:02:36

标签: c#

我当时正在考虑制作System.IO.PathSystem.IO.FileSystem.IO.Directory的更“高级”版本。

很显然,我从System.IO.Path开始,因为文件和目录的基础是路径,所以我开始编写一个名为ContainsInvalidChars的函数(检查该路径是否包含无效字符),为此必须使用GetDirectoryNameGetFileName,但是在编写了这两种方法之后,我停下来想了想:

这两种方法如何区分输入路径是目录,文件还是dir +文件”。我进行了几次测试,发现它们没有。例如,如果您有类似{{1} },然后将其放入C:\\Users\\UserName\\AppData中,即使GetFileName是文件夹,并且从技术上讲应该是目录的一部分,并且文件名应为null,与{{ 1}},即使AppData也是目录名的一部分,它也只返回AppData。因此,我得出的结论是,我首先必须编写适当的GetDirectoryName和{{1 }}方法,然后只写AppData。问题仍然存在,如何区分这三种类型的路径。考虑到这一点,我开始在计算机上寻找一对文件(这很容易C:\\Users\\UserName列,其中显示文件/文件夹的类型,如果是文件夹,则显示{/ {1}},如果文件(甚至没有扩展名)GetFileName,那么我在这里,有什么办法在C#中获取文件/文件夹类型?

我知道一天结束时您总是可以写GetDirectoryName,是的,这将是DIR =“ C:\ Users \ UserName \ AppData”&FILE =“”,但我知道有些人不会这样做不要在末尾写ContainsInvalidChars,而只需写Type

2 个答案:

答案 0 :(得分:3)

System.IO提供的功能: File.Exists(string Path)Directory.Exists(string Path)。根据Path的值返回布尔值

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


Ouput:
   Folder exists

答案 1 :(得分:0)

如果您使用的是.net 4.0及更高版本,则可以使用以下代码来实现此目的。

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

但是请确保路径有效。

您也可以使用

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