首頁 >後端開發 >C++ >使用「Directory.GetFiles」時如何處理「UnauthorizedAccessException」錯誤?

使用「Directory.GetFiles」時如何處理「UnauthorizedAccessException」錯誤?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-07 15:21:44883瀏覽

How to Handle `UnauthorizedAccessException` Errors When Using `Directory.GetFiles`?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn