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

如何在C#中获取文件/文件夹类型?,c#,C#,我正在考虑制作一个更“高级”版本的System.IO.Path,System.IO.File&System.IO.Directory 显然,我是从System.IO.Path开始的,因为文件和目录的基础是Path,所以我开始编写一个名为ContainsInvalidChars(检查所述路径是否包含无效字符)的函数,为此我不得不使用GetDirectoryName和GetFileName,但是,在写了这两种方法之后,我停下来想: 这两种方法如何区分输入路径是目录、文件还是dir+文件“我做了几次测

我正在考虑制作一个更“高级”版本的
System.IO.Path
System.IO.File
&
System.IO.Directory

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

这两种方法如何区分输入路径是目录、文件还是dir+文件“我做了几次测试,发现他们没有。例如,如果您有类似于
C:\\Users\\UserName\\AppData
的内容,并将其放入
GetFileName
中,它将返回
AppData
,即使
AppData
是一个文件夹,技术上应该是目录的一部分,并且文件名应该为空,与
GetDirectoryName
相同,即使是
AppData
也是目录名的一部分,它也只返回
C:\\Users\\UserName
。因此我得出的结论是,我首先必须编写一个适当的
GetFileName
&
GetDirectoryName
方法,然后只编写
包含有效字符的方法。问题仍然存在,我如何区分这三种路径。考虑到这一点,我开始在我的电脑上寻找一对文件,这时我注意到了
Type
列,其中显示了文件/文件夹的类型,if folder then
file folder
if file(即使没有扩展名)
(Ext)file
,所以,我来了。有没有办法获得C#中的文件/文件夹类型


我知道,在一天结束时,你总是可以写
C:\\Users\\UserName\\AppData\\
,是的,这将是DIR=“C:\Users\UserName\AppData”&FILE=“”,但我知道有些人在结束时不写
\
,只写
C:\\Users\\UserName\\AppData
System.IO
提供的功能:
文件.Exists(字符串路径)
目录.Exists(字符串路径)
。基于路径的值返回布尔值

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


Ouput:
   Folder exists

System.IO
提供的功能:
文件.Exists(字符串路径)
目录.Exists(字符串路径)
。基于路径的值返回布尔值

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


Ouput:
   Folder exists

如果您使用的是.NET4.0及以上版本,那么有一种方法可以通过使用下面的代码来实现

File.GetAttributes("your path to directory or file").HasFlag(FileAttributes.Directory)
但请确保路径有效

您也可以使用

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

如果您使用的是.NET4.0及以上版本,那么有一种方法可以通过使用下面的代码来实现

File.GetAttributes("your path to directory or file").HasFlag(FileAttributes.Directory)
但请确保路径有效

您也可以使用

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

应该有一种从命令行检查的方法,您可以从代码中使用该方法。您是否阅读了
GetFileName
的文档?你认为它有什么作用?您认为它实际上是在查看文件系统吗?将进行读取,可能首先应该这样做xd应该有一种方法可以从命令行检查,您可以从代码中使用xd您是否阅读了
GetFileName
的文档?你认为它有什么作用?你认为它实际上看的是文件系统吗?会有一个读取,可能首先应该这样做。这是真的,现在我想,这可能是区分它们的唯一方法。幸运的是,你不能创建与文件同名的文件夹(反之亦然),所以这也是一个优点,因为,如果你能创建与文件名相同的文件夹,那么问题仍然存在。我不明白你到底在说什么,你能用简单的话表达你的想法吗?或者路径可能什么都没有。没有文件或文件夹。在这种情况下,您仍然显示它可能是一个文件,这可能是真的,现在我想,这可能是区分它们的唯一方法。幸运的是,您无法创建与文件同名的文件夹(反之亦然),因此这也是一个优点,因为,如果你能创建与文件名相同的文件夹,那么问题仍然存在。我不明白你到底在说什么,你能用简单的话表达你的想法吗?或者路径可能什么都没有。没有文件或文件夹。在这种情况下,您仍在显示它可能是一个文件