Как отличить файл или папку в событии перетаскивания в C #? - PullRequest
10 голосов
/ 05 мая 2011

У меня есть форма, в которую вы перетаскиваете файлы, и мне было интересно, как я могу сообщить приложению, являются ли данные файлом или папкой.

Моей первой попыткой было найти "."в данных, но затем некоторые папки имеют.в них.Я также попытался выполнить условие File.Exists и Directory.Exists, но затем он выполняет поиск только по текущему пути приложения, а не где-либо еще.каталог или есть способ проверить, какой тип данных перетаскивается в форму?

Ответы [ 2 ]

17 голосов
/ 05 мая 2011

Учитывая путь в виде строки, вы можете использовать System.IO.File.GetAttributes (путь строки) , чтобы получить перечисление FileAttributes, а затем проверить, если *Установлен флаг 1006 *.

Чтобы проверить папку в версиях .NET, предшествующих .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: путь представляет папку
  • FileAttributes.Hidden: файл скрыт
  • FileAttributes.Compressed: файл сжат
  • FileAttributes.ReadOnly: файл доступен только для чтения
  • FileAttributes.NotContentIndexed: исключено из индексации

и т. Д.

1 голос
/ 05 мая 2011
if(Directory.Exists(path))
  // then it is a directory
else
  // then it is a file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...