首頁 > 後端開發 > C++ > 如何安全地處理目錄結構中的文件,同時忽略 C# 中的拒絕存取異常?

如何安全地處理目錄結構中的文件,同時忽略 C# 中的拒絕存取異常?

Linda Hamilton
發布: 2025-01-27 23:01:11
原創
622 人瀏覽過

How Can I Safely Process Files in a Directory Structure While Ignoring Access Denied Exceptions in C#?

使用 Directory.GetFiles() 安全地遍歷目錄

在使用 C# 遍歷目錄時,由於受保護的資料夾,通常會遇到存取被拒絕異常。為了防止這些異常中斷程序,讓我們探討如何優雅地忽略不可存取的目錄並繼續處理可存取的檔案。

挑戰

使用 Directory.GetFiles() 的標準方法在遇到無法存取的資料夾時會突然拋出異常,從而停止任何進一步的處理。

遞歸解決方案

與其依賴會引發異常的 AllDirectories 參數,不如手動實現遞迴。這涉及到一次迭代一個目錄,嘗試存取其文件,並遞歸地探索任何子目錄。

using System;
using System.IO;

public static class Program
{
    public static void Main()
    {
        string path = ""; // 获取目录路径
        ProcessAllFiles(path, ProcessFile);
    }

    private static void ProcessFile(string path) { /* 在此处添加文件处理代码。 */ }

    private static void ProcessAllFiles(string folder, Action<string> fileAction)
    {
        try
        {
            foreach (string file in Directory.GetFiles(folder))
            {
                fileAction(file);
            }

            foreach (string subDir in Directory.GetDirectories(folder))
            {
                ProcessAllFiles(subDir, fileAction);
            }
        }
        catch (Exception ex)
        {
            // 处理或忽略异常(例如,将其记录下来以便日后查看)。  考虑记录异常类型和路径信息。
            Console.WriteLine($"Error processing directory '{folder}': {ex.Message}");
        }
    }
}
登入後複製

此程式碼迭代地探索目錄結構,忽略不可存取的資料夾並繼續處理可存取的檔案。可以自訂 catch 區塊來吞下異常或執行自訂處理,例如記錄它。 改進後的程式碼包含一個 try-catch 區塊來處理可能發生的任何異常,並列印一條錯誤訊息,包括異常訊息和出錯的資料夾路徑。

結論

透過實作自訂遞歸,我們可以忽略存取被拒絕異常並繼續存取目錄結構中的檔案。即使處理受保護的或不可存取的資料夾,這也允許更健壯和用戶友好的文件處理。

以上是如何安全地處理目錄結構中的文件,同時忽略 C# 中的拒絕存取異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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