我正在使用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);
答案 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.
}
}