Сделайте Directory.GetFiles () игнорировать защищенные папки - PullRequest
3 голосов
/ 15 февраля 2011

Я использую метод Directory.GetFiles (), чтобы получить список файлов для работы. Этот метод создает исключение UnauthorizedAccessException, например, при попытке доступа к защищенной папке. Я хотел бы просто пропустить такие папки и продолжить. Как я могу сделать это с помощью Directory.GetFiles (предпочтительно) или другого метода?

Обновление:

Вот код, который выдает исключение. Я прошу пользователя выбрать каталог, а затем получить список файлов. Я закомментировал код (так что теперь это целый метод), который перебирает файлы, и проблема все еще возникает. Исключение выдается в строке Directory.GetFiles ().

FolderBrowserDialog fbd = new FolderBrowserDialog();
DialogResult dr = fbd.ShowDialog();

if (dr == System.Windows.Forms.DialogResult.Cancel) return; 

string directory = fbd.SelectedPath;
string[] files = Directory.GetFiles(directory, "*.html", SearchOption.AllDirectories);

1 Ответ

4 голосов
/ 15 февраля 2011

Если вы получаете сообщение об ошибке при циклическом просмотре файлов, вы можете попытаться поймать его, зарегистрировать ошибку и продолжить обработку. Пример:

foreach(string filePath in Directory.GetFiles(blah))
{
   try
   {
      //do something with file
   }
   catch(UnauthorizedAccessException ex)
   {
      //email yourself about exception or just log it somewhere.
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...