解Directory.GetFiles
拋出的UnauthorizedAccessException
異常
使用Directory.GetFiles
取得檔案路徑時,如果程式缺乏對指定目錄中特定資料夾的存取權限,則可能會遇到UnauthorizedAccessException
異常。此異常發生在方法已嘗試存取不可存取的資料夾之後,導致操作過早終止。
為了解決這個問題,建議採用迭代方法,而不是一次嘗試存取整個目錄樹。以下程式碼範例示範如何安全地探測目錄並收集檔案:
<code class="language-csharp">private static void AddFiles(string path, IList<string> files) { try { foreach (string file in Directory.GetFiles(path)) { files.Add(file); } foreach (string subdirectory in Directory.GetDirectories(path)) { AddFiles(subdirectory, files); } } catch (UnauthorizedAccessException ex) { // 以优雅的方式处理访问被拒绝的异常。 // 可以记录问题或继续处理下一个目录。 // 例如:Console.WriteLine($"Access denied to directory: {path}, Exception: {ex.Message}"); } }</code>
透過逐一探測目錄,可以避免在對特定資料夾的存取被拒絕時終止整個操作。這允許程式繼續處理具有存取權限的目錄中的檔案。 此方法比原始範例更清晰地處理Directory.GetFiles
的結果,避免了不必要的ToList()
和ForEach()
調用,提高了程式碼效率和可讀性。
以上是使用「Directory.GetFiles」時如何處理「UnauthorizedAccessException」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!