Apabila merentasi direktori menggunakan C#, adalah perkara biasa untuk menghadapi pengecualian yang ditolak akses kerana folder yang dilindungi. Untuk mengelakkan pengecualian ini daripada mengganggu program anda, mari kita terokai cara mengabaikan direktori yang tidak boleh diakses dan terus memproses fail yang boleh diakses.
Kaedah standard menggunakan Directory.GetFiles() tiba-tiba akan membuang pengecualian apabila menemui folder yang tidak boleh diakses, menghentikan sebarang pemprosesan selanjutnya.
Daripada bergantung pada parameter AllDirectories, yang memberikan pengecualian, laksanakan rekursi secara manual. Ini melibatkan lelaran satu direktori pada satu masa, cuba mengakses failnya dan meneroka mana-mana subdirektori secara rekursif.
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}"); } } }
Kod ini meneroka struktur direktori secara berulang, mengabaikan folder yang tidak boleh diakses dan meneruskan dengan fail yang boleh diakses. Blok tangkapan boleh disesuaikan untuk menelan pengecualian atau melakukan pengendalian tersuai, seperti mengelognya. Kod yang dipertingkatkan termasuk blok try-catch
untuk mengendalikan sebarang pengecualian yang mungkin berlaku dan mencetak mesej ralat termasuk mesej pengecualian dan laluan folder tempat ralat berlaku.
Dengan melaksanakan rekursi tersuai, kami boleh mengabaikan pengecualian akses yang ditolak dan terus mengakses fail dalam struktur direktori. Ini membolehkan pengendalian fail yang lebih mantap dan mesra pengguna, walaupun semasa berurusan dengan folder yang dilindungi atau tidak boleh diakses.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memproses Fail dengan Selamat dalam Struktur Direktori Semasa Mengabaikan Pengecualian Dinafikan Akses dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!