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

271
27 ноября 2017, 15:43

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

Directory.GetFiles(string,string,SearchOption)

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

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

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

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

Answer 1

Взял отсюда

private List<string> GetFiles(string path, string pattern)
{
    var files = new List<string>();
    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
READ ALSO
c#, Graphics.DrawString(), InvalidOperationException

c#, Graphics.DrawString(), InvalidOperationException

Столкнулся с InvalidOperationException: В данный момент объект используется другим процессом

370
Событие на нажатие кнопки мыши вне элемента управления. C#. Windows Forms

Событие на нажатие кнопки мыши вне элемента управления. C#. Windows Forms

Как обработать событие одиночного и двойного нажатия кнопки мыши за границами элемента управления? Все события нажатия кнопки мыши привязаны...

340
как работать с longpoll vk в c#

как работать с longpoll vk в c#

не могу понять как это делатьтоесть обновлять инфу в активном времени

217
запуск кода в отдельном потоке c#

запуск кода в отдельном потоке c#

как запустить этот код в отдельном потоке?

221