克服Directory.GetFiles 中的未經授權存取異常
當使用Directory.GetFiles() 遞歸搜尋目錄樹中的檔案時,當程式嘗試存取沒有足夠權限的資料夾時,可能會遇到UnauthorizedAccessException。此異常會過早中止操作。
要解決此問題,建議採用更受控制的方法,分別探測每個目錄。下面的程式碼示範了這種技術:
private static void AddFiles(string path, IList<string> files) { try { Directory.GetFiles(path) .ToList() .ForEach(file => files.Add(file)); Directory.GetDirectories(path) .ToList() .ForEach(dir => AddFiles(dir, files)); } catch (UnauthorizedAccessException ex) { // Handle inaccessible directory (e.g., move on to the next one) } }
在這個方法中,AddFiles() 會迭代路徑中的所有檔案和子目錄。當它遇到無法訪問的目錄時,它只是跳過它並繼續訪問剩餘的目錄。透過這樣做,程式可以繼續其文件搜索,而不會由於授權問題而突然終止。
以上是使用 Directory.GetFiles() 時如何處理 UnauthorizedAccessException?的詳細內容。更多資訊請關注PHP中文網其他相關文章!