Kendalikan pengecualian UnauthorizedAccessException secara elegan yang berlaku apabila Directory.GetFiles merentasi direktori
Apabila melakukan operasi fail dan direktori, anda mungkin menghadapi pengecualian Directory.GetFiles
apabila menggunakan kaedah UnauthorizedAccessException
. Pengecualian ini berlaku apabila kaedah cuba mengakses direktori yang pengguna tidak mempunyai kebenaran yang sesuai.
Untuk menyelesaikan masalah ini, disyorkan untuk menyiasat direktori satu demi satu dan bukannya merentasi keseluruhan pepohon direktori. Pendekatan ini membolehkan kawalan yang lebih halus ke atas operasi. Kod berikut menunjukkan pendekatan yang lebih baik:
<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) { // 忽略此目录的访问权限错误,继续处理其他目录 } }</code>
Dalam kaedah ini, UnauthorizedAccessException
ditangkap dan dikendalikan dengan anggun, membenarkan atur cara meneruskan pelaksanaan dan mungkin menemui fail lain yang boleh diakses. Lelaran diteruskan melalui hierarki direktori, memanggil dirinya secara rekursif untuk meneroka subdirektori.
Dengan menggunakan teknik ini, anda boleh mengelakkan Directory.GetFiles
penamatan kaedah kerana ralat yang dinafikan akses dan mengekalkan kawalan proses traversal direktori. Kaedah ini menggunakan gelung foreach
dan bukannya ToList().ForEach()
, menjadikannya lebih mudah dibaca dan cekap.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan UnauthorizedAccessException Apabila Menggunakan Directory.GetFiles untuk Melintasi Direktori?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!