首頁 >後端開發 >C++ >在忽略C#中的訪問異常時,如何遞歸列出文件?

在忽略C#中的訪問異常時,如何遞歸列出文件?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-27 23:21:10173瀏覽

How Can I Recursively List Files While Ignoring Access Exceptions in C#?

處理Directory.GetFiles()中的文件訪問異常

使用Directory.GetFiles()方法時,可能會遇到無法訪問指定目錄路徑中某些文件夾或文件的情況,從而導致異常併中斷文件列表過程。為了克服此限制,並在忽略受保護或不可訪問的項目的同時繼續列出可訪問的文件,建議採用手動遞歸方法。

Directory.GetFiles()方法原生支持使用AllDirectories參數進行遞歸。但是,如果某些子目錄的訪問被拒絕,則此方法可能不可靠,導致進程突然終止。為了解決這個問題,需要一種自定義的遞歸方法。

提供的代碼片段演示瞭如何在遞歸列出指定目錄中的文件的同時優雅地處理訪問異常。它引入了一種新方法ApplyAllFiles(),該方法執行自定義遞歸搜索。

ApplyAllFiles()中,代碼迭代當前目錄中的每個文件,並調用提供的fileAction委託來處理該文件。然後,它列出當前目錄中的子目錄,並嘗試將相同的ApplyAllFiles()方法應用於每個子目錄。

如果在嘗試訪問子目錄期間遇到任何異常,代碼會靜默地吞下異常,確保該過程繼續列出可訪問的文件而不會中斷。

通過採用這種方法,開發人員可以有效地列出目錄中的文件,同時忽略不可訪問的文件夾或文件。它允許更強大的文件列表操作,尤其是在不同子目錄的訪問權限不同的情況下。

以上是在忽略C#中的訪問異常時,如何遞歸列出文件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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