Я хочу получить список файлов, которые находятся во вложенных директориях и использую:
Directory.GetFiles(string,string,SearchOption)
Но через какое-то время я получаю ошибку: "Отказано в доступе".
Я посмотрел в дебагере и обнаружил, что Directory.GetFiles
натыкается на какие-то скрытые системные папки, которые мне в принципе не нужны.
Можно ли как-нибудь задать игнорирование подобных папок?
Если я оберну все в try/catch
, то боюсь, что я не получу нужны мне список.
Взял отсюда
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
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Столкнулся с InvalidOperationException: В данный момент объект используется другим процессом
Как обработать событие одиночного и двойного нажатия кнопки мыши за границами элемента управления? Все события нажатия кнопки мыши привязаны...
не могу понять как это делатьтоесть обновлять инфу в активном времени