Mengendalikan pengecualian akses fail dalam Directory.GetFiles()
Apabila menggunakan kaedah Directory.GetFiles()
, anda mungkin menghadapi situasi di mana folder atau fail tertentu dalam laluan direktori yang ditentukan tidak boleh diakses, menyebabkan pengecualian dan mengganggu proses penyenaraian fail. Untuk mengatasi had ini dan terus menyenaraikan fail yang boleh diakses sambil mengabaikan item yang dilindungi atau tidak boleh diakses, pendekatan rekursif manual disyorkan.
Directory.GetFiles()
asli menyokong rekursi menggunakan parameter AllDirectories
. Walau bagaimanapun, kaedah ini mungkin tidak boleh dipercayai jika akses kepada subdirektori tertentu dinafikan, menyebabkan proses ditamatkan secara tiba-tiba. Untuk menyelesaikan masalah ini, pendekatan rekursif tersuai diperlukan.
Coretan kod yang disediakan menunjukkan cara mengendalikan pengecualian akses dengan anggun sambil menyenaraikan fail secara rekursif dalam direktori tertentu. Ia memperkenalkan kaedah baharu ApplyAllFiles()
yang melakukan carian rekursif tersuai.
Dalam ApplyAllFiles()
, kod itu berulang pada setiap fail dalam direktori semasa dan memanggil perwakilan fileAction
yang disediakan untuk memproses fail. Ia kemudian menyenaraikan subdirektori dalam direktori semasa dan cuba menggunakan kaedah ApplyAllFiles()
yang sama untuk setiap subdirektori.
Jika sebarang pengecualian ditemui semasa cuba mengakses subdirektori, kod tersebut akan menelan pengecualian secara senyap, memastikan proses itu terus menyenaraikan fail yang boleh diakses tanpa gangguan.
Dengan menggunakan pendekatan ini, pembangun boleh menyenaraikan fail dalam direktori dengan cekap sambil mengabaikan folder atau fail yang tidak boleh diakses. Ia membolehkan manipulasi senarai fail yang lebih berkuasa, terutamanya apabila subdirektori yang berbeza mempunyai hak akses yang berbeza.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menyenaraikan fail secara rekursif sambil mengabaikan pengecualian akses di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!