Memahami Pengecualian "Direktori tidak kosong" Semasa Pemadaman Direktori Rekursif
Apabila cuba memadamkan direktori secara rekursif menggunakan Directory.Delete( myPath, true), pengguna mungkin menghadapi mesej ralat "Direktori tidak kosong." Ini boleh mengelirukan memandangkan hujah rekursif membayangkan bahawa subdirektori juga harus dipadamkan.
Satu sebab yang berpotensi untuk ralat ini ialah kehadiran fail tidak boleh dipadam dalam struktur direktori. Untuk menangani perkara ini, adalah disyorkan untuk melaksanakan fungsi rekursif yang mula-mula mengalih keluar semua fail daripada subdirektori, diikuti dengan mengalih keluar semua subdirektori dan akhirnya memadamkan direktori akar.
Untuk mengoptimumkan proses pemadaman, pertimbangkan untuk mengalih keluar atribut baca sahaja daripada fail sebelum memadamkannya, kerana ini boleh menghalang pelanggaran akses. Di bawah ialah contoh pelaksanaan fungsi pemadaman direktori rekursif:
public static void DeleteDirectory(string target_dir) { string[] files = Directory.GetFiles(target_dir); string[] dirs = Directory.GetDirectories(target_dir); foreach (string file in files) { File.SetAttributes(file, FileAttributes.Normal); File.Delete(file); } foreach (string dir in dirs) { DeleteDirectory(dir); } Directory.Delete(target_dir, false); }
Selain itu, pertimbangkan untuk melaksanakan sekatan untuk mengelakkan pemadaman tidak sengaja direktori sistem kritikal.
Atas ialah kandungan terperinci Mengapa Directory.Delete(myPath, true) Gagal dengan 'Direktori tidak kosong'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!