Apabila menggunakan fail dalam direktori penghitungan , jika folder atau fail yang dilindungi ditemui, halangan boleh ditemui. Ini boleh menyebabkan proses senarai fail berhenti tiba -tiba kerana keabnormalan. Walau bagaimanapun, jika anda ingin mengabaikan barang -barang terhad ini dengan elegan dan terus melintasi fail yang boleh diakses, apa yang perlu saya lakukan?
Kuncinya adalah untuk meninggalkan parameter Directory.GetFiles()
dan proses rekursi secara manual. Anda boleh mengawal proses dengan lebih berhati -hati dengan memeriksa setiap subdirektori.
sila pertimbangkan serpihan kod berikut: AllDirectories
Dalam kod ini, kami menggunakan Suruhanjaya (
) untuk menentukan operasi setiap fail yang dijumpai.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) { // 处理其他潜在异常 } } } }
dan meneruskan penerokaannya. Action<string>
ApplyAllFiles()
Melalui rekursif pengurusan manual, anda boleh memintas folder atau fail yang tidak boleh digantikan dengan berkesan untuk memastikan item yang diberi kuasa hanya diproses tanpa mengganggu operasi senarai fail anda. Kod yang lebih baik juga diproses untuk memastikan program yang lebih mantap. UnauthorizedAccessException
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengabaikan Ralat Kebenaran Apabila Menggunakan Directory.GetFiles()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!