首頁 > 後端開發 > C++ > 使用Directory.getFiles()時,如何忽略權限錯誤?

使用Directory.getFiles()時,如何忽略權限錯誤?

DDD
發布: 2025-01-27 23:06:10
原創
826 人瀏覽過

How Can I Ignore Permission Errors When Using Directory.GetFiles()?

優雅地處理Directory.GetFiles()中的文件和文件夾權限問題

使用Directory.GetFiles()枚舉目錄中的文件時,如果遇到受保護的文件夾或文件,可能會遇到障礙。這可能會導致文件列表過程因異常而突然停止。但是,如果您想優雅地忽略這些受限項並繼續遍歷可訪問的文件,該怎麼辦?

關鍵在於放棄AllDirectories參數並手動處理遞歸。通過單獨檢查每個子目錄,您可以更精細地控制該過程。

請考慮以下代碼片段:

<code class="language-csharp">using System;
using System.IO;

static class Program
{
    static void Main()
    {
        string path = ""; // TODO
        ApplyAllFiles(path, ProcessFile);
    }
    static void ProcessFile(string path) {/* ... */}
    static void ApplyAllFiles(string folder, Action<string> fileAction)
    {
        try
        {
            foreach (string file in Directory.GetFiles(folder))
            {
                fileAction(file);
            }
        }
        catch (UnauthorizedAccessException)
        {
            // 处理异常
        }
        catch (Exception ex)
        {
            // 处理其他异常
        }

        foreach (string subDir in Directory.GetDirectories(folder))
        {
            try
            {
                ApplyAllFiles(subDir, fileAction);
            }
            catch (UnauthorizedAccessException)
            {
                // 处理异常,例如记录错误信息或忽略
            }
            catch (Exception ex)
            {
                // 处理其他潜在异常
            }
        }
    }
}</code>
登入後複製

在此代碼中,我們使用委託(Action<string>)來指定對找到的每個文件執行的操作。 ApplyAllFiles()方法遞歸地探索子目錄,捕獲任何UnauthorizedAccessException並繼續其探索。

通過手動管理遞歸,您可以有效地繞過不可訪問的文件夾或文件,確保僅處理授權的項目,而不會中斷您的文件列表操作。 改進後的代碼對Directory.GetFiles也進行了異常處理,確保更健壯的程序。

以上是使用Directory.getFiles()時,如何忽略權限錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板