Страницы

Поиск по вопросам

понедельник, 22 апреля 2019 г.

Поиск файлов в директориях

Необходимо найти все файлы на диске. Есть такой код:
System.IO.DirectoryInfo number = new System.IO.DirectoryInfo(@"D:\"); int count = number.GetFiles().Length;
Ищет, но не ищет во всех папках. Пробовал так:
System.IO.DirectoryInfo number = new System.IO.DirectoryInfo(@"D:\"); int count = number.GetFiles(".", SearchOption.AllDirectories).Length;


Ответ

SearchOption.AllDirectories будет ронять весь поиск, если к одному из подкаталогов нет доступа. А учитывая, что ты передаёшь корень диска, там гарантированно попадётся System Volume Information и поиск упадёт. В остальном код работоспособный.
Чтобы правильно обработать каталоги, к которым нет доступа, надо вместо передачи этого флага написать рекурсивную функцию, которая будет сама перебирать каталоги и игнорировать (или каким-либо ещё образом обрабатывать) исключения ошибки доступа.
PS: https://ru.stackoverflow.com/a/419435/178988 http://bbs.vbstreets.ru/viewtopic.php?f=2&t=44440 http://www.cyberforum.ru/csharp-beginners/thread957151.html

Комментариев нет:

Отправить комментарий