2011-02-14 56 views
3

我使用Directory.GetFiles()方法獲取要操作的文件列表。例如,當嘗試訪問受保護的文件夾時,此方法會引發UnauthorizedAccessException。我想簡單地跳過這些文件夾並繼續。我怎樣才能完成這與Directory.GetFiles(最好)或其他方法?使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

你可以發佈你的代碼嗎?如果檢測到的某個文件被鎖定,`GetFiles`不應該拋出。你確定當你循環播放這些文件並對它們做某些事情時,這個異常不會發生嗎? – 2011-02-14 23:01:06

+0

它是否在GetFiles調用中出錯或者當您嘗試對發現的文件執行某些操作? – 2011-02-14 23:01:08

回答

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. 
    } 
}