Selesaikan Directory.GetFiles
dilemparkan UnauthorizedAccessException
Pengecualian
Apabila menggunakan Directory.GetFiles
untuk mendapatkan laluan fail, anda mungkin menghadapi pengecualian UnauthorizedAccessException
jika program tidak mempunyai hak akses kepada folder tertentu dalam direktori yang ditentukan. Pengecualian ini berlaku selepas kaedah cuba mengakses folder yang tidak boleh diakses, menyebabkan operasi ditamatkan lebih awal.
Untuk menyelesaikan masalah ini, adalah disyorkan untuk menggunakan pendekatan berulang daripada cuba mengakses keseluruhan pepohon direktori sekaligus. Contoh kod berikut menunjukkan cara menyiasat direktori dan mengumpul fail dengan selamat:
<code class="language-csharp">private static void AddFiles(string path, IList<string> files) { try { foreach (string file in Directory.GetFiles(path)) { files.Add(file); } foreach (string subdirectory in Directory.GetDirectories(path)) { AddFiles(subdirectory, files); } } catch (UnauthorizedAccessException ex) { // 以优雅的方式处理访问被拒绝的异常。 // 可以记录问题或继续处理下一个目录。 // 例如:Console.WriteLine($"Access denied to directory: {path}, Exception: {ex.Message}"); } }</code>
Dengan menyelidik direktori satu demi satu, anda boleh mengelak daripada menamatkan keseluruhan operasi jika akses kepada folder tertentu ditolak. Ini membolehkan program meneruskan pemprosesan fail dalam direktori yang mempunyai hak akses. Kaedah ini mengendalikan keputusan Directory.GetFiles
dengan lebih jelas daripada contoh asal, mengelakkan panggilan ToList()
dan ForEach()
yang tidak perlu serta meningkatkan kecekapan dan kebolehbacaan kod.
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Ralat `UnauthorizedAccessException` Apabila Menggunakan `Directory.GetFiles`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!