在c#中,如何区分拖放事件中的文件或文件夹?
我有一个表单,您可以将文件拖放到其中,我想知道如何让应用程序知道数据是文件还是文件夹 我的第一次尝试是在数据中查找一个“.”,但有些文件夹确实有一个“.”。在他们里面。我还尝试过执行File.Exists和Directory.Exists条件,但它只在当前应用程序路径上搜索,而不在其他任何地方搜索在c#中,如何区分拖放事件中的文件或文件夹?,c#,file,drag-and-drop,directory,C#,File,Drag And Drop,Directory,我有一个表单,您可以将文件拖放到其中,我想知道如何让应用程序知道数据是文件还是文件夹 我的第一次尝试是在数据中查找一个“.”,但有些文件夹确实有一个“.”。在他们里面。我还尝试过执行File.Exists和Directory.Exists条件,但它只在当前应用程序路径上搜索,而不在其他任何地方搜索 是否有方法可以以某种方式应用.Exists在特定目录中,或者是否有方法可以检查将何种类型的数据拖到表单中?如果路径是字符串,则可以使用获取枚举,然后检查是否设置了FileAttributes.dire
是否有方法可以以某种方式应用.Exists在特定目录中,或者是否有方法可以检查将何种类型的数据拖到表单中?如果路径是字符串,则可以使用获取枚举,然后检查是否设置了
FileAttributes.directory
标志
要在.NET 4.0之前的.NET版本中检查文件夹,应执行以下操作:
FileAttributes attr = File.GetAttributes(path);
bool isFolder = (attr & FileAttributes.Directory) == FileAttributes.Directory;
在较新的版本中,您可以使用HasFlag
方法获得相同的结果:
bool isFolder = File.GetAttributes(path).HasFlag(FileAttributes.Directory);
还请注意,它可以提供有关文件/文件夹的各种其他标志,例如:
:路径表示文件夹FileAttributes.Directory
:文件被隐藏FileAttributes.Hidden
:文件已压缩FileAttributes.Compressed
:文件是只读的FileAttributes.ReadOnly
:从索引中排除FileAttributes.NotContentIndexed
等等。您使用的是WPF还是WinForms?您的应用程序检索的是完整路径还是相对路径?(请举例。)如果它只检索相对路径,则需要
路径。将与应用程序路径组合以获得完整路径。是的,这就是我遇到的问题。它没有得到完整的路径。.Exists方法现在可以工作了。谢谢我更喜欢:bool isFolder=File.GetAttributes(File.hasvag)(FileAttributes.Directory)代码>+1@Dan,但请记住,这在旧版本的框架中不可用,在这种情况下,上述解决方案是可行的。@TimothyP在这种情况下,一点逻辑不会伤害任何人。;)
if(Directory.Exists(path))
// then it is a directory
else
// then it is a file