SearchOption.AllDirectories и игнорировать ошибки доступа? - PullRequest
1 голос
/ 08 ноября 2010
        string[] files = Directory.GetFiles(tb_dir.Text, tb_filter.Text, SearchOption.AllDirectories);

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

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

Спасибо

Crash893

1 Ответ

1 голос
/ 08 ноября 2010

Вы можете сделать что-то вроде этого:

List<string> GetFiles(string topDirectory, string filter)
{
    List<string> list = new List<string>();
    list.AddRange(Directory.GetFiles(topDirectory, filter));
    foreach (string directory in Directory.GetDirectories(topDirectory))
    {
        list.AddRange(GetFiles(directory));
    }
    return list;
}

и позвоните по этому номеру:

List<string> files = GetFiles(tb_dir.Text, tb_filter.Text);

Конечно, вы можете преобразовать список файлов в массив.

Вы должны добавить блоки try catch для обработки исключения UnauthorizedAccessException.

...