使Directory.GetFiles()忽略受保护的文件夹

时间:2011-02-14 22:58:17

标签: c# .net file-io directory

我正在使用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 个答案:

答案 0 :(得分:4)

如果在循环浏览文件时遇到错误,可以尝试捕获它,记录错误并继续处理。例如:

foreach(string filePath in Directory.GetFiles(blah))
{
   try
   {
      //do something with file
   }
   catch(UnauthorizedAccessException ex)
   {
      //email yourself about exception or just log it somewhere.
   }
}