如何在c#的拖放事件中区分文件或文件夹

本文关键字:中区 文件 文件夹 事件 拖放 | 更新日期: 2023-09-27 17:55:03

我有一个你拖放文件的表单,我想知道我如何使应用程序知道数据是文件还是文件夹。

我的第一次尝试是在数据中寻找一个"。",但后来一些文件夹确实有一个。在他们。我也试过做一个文件。Exists和a Directory。存在条件,但它只搜索当前应用程序路径,而不搜索其他任何地方。

是否有任何方式,我可以以某种方式应用。exists在一个特定的目录或有一种方法,我可以检查什么类型的数据被拖到表单?

如何在c#的拖放事件中区分文件或文件夹

给定路径为字符串,您可以使用System.IO.File。GetAttributes(string path)获取FileAttributes enum,然后检查是否设置了FileAttributes.Directory标志

要检查。net 4.0之前版本的文件夹,您应该执行:

FileAttributes attr = File.GetAttributes(path);
bool isFolder = (attr & FileAttributes.Directory) == FileAttributes.Directory;

在较新的版本中,您可以使用HasFlag方法来获得相同的结果:

bool isFolder = File.GetAttributes(path).HasFlag(FileAttributes.Directory);

还要注意FileAttributes可以提供关于文件/文件夹的各种其他标志,例如:

  • FileAttributes.Directory: path表示文件夹
  • FileAttributes.Hidden: file is hidden
  • FileAttributes.Compressed:文件被压缩
  • FileAttributes.ReadOnly:文件是只读的
  • FileAttributes.NotContentIndexed:从索引
  • 中排除

等。

if(Directory.Exists(path))
  // then it is a directory
else
  // then it is a file