Страницы

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

понедельник, 6 января 2020 г.

Отказано в доступе при использовании Directory.GetFiles

#c_sharp #net #файлы


Я хочу получить список файлов, которые находятся во вложенных директориях и использую:

Directory.GetFiles(string,string,SearchOption)


Но через какое-то время я получаю ошибку: "Отказано в доступе".

Я посмотрел в дебагере и обнаружил, что Directory.GetFiles натыкается на какие-то
скрытые системные папки, которые мне в принципе не нужны.

Можно ли как-нибудь задать игнорирование подобных папок?

Если я оберну все в try/catch, то боюсь, что я не получу нужны мне список.
    


Ответы

Ответ 1



Взял отсюда private List GetFiles(string path, string pattern) { var files = new List(); try { files.AddRange(Directory.GetFiles(path, pattern, SearchOption.TopDirectoryOnly)); foreach (var directory in Directory.GetDirectories(path)) files.AddRange(GetFiles(directory, pattern)); } catch (UnauthorizedAccessException) { } return files; } Функция рекурсивная. При составлении списка файлов будут учитываться обыкновенные папки, а системные не учитываться. Не должно быть такого, что из-за Eхception в конечный результат не войдут обыкновенные файлы. Console.WriteLine("Started: " + DateTime.Now.ToLongTimeString()); var fileList = GetFiles("c:\\", "*.*"); Console.WriteLine("Finished: " + DateTime.Now.ToLongTimeString()); Console.WriteLine("Files count: " + fileList.Count); // У меня так: // Started: 12:43:05 // Finished: 12:44:33 // Files count: 427083

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

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