Directory.Delete(path, true)
Kadangkala Gagal dengan "Direktori tidak kosong"?Menggunakan Directory.Delete(myPath, true)
untuk pemadaman direktori rekursif mungkin membuang System.IO.IOException: The directory is not empty
pengecualian. Ini berlawanan dengan intuitif, terutamanya apabila true
(pemadaman rekursif) ditentukan. Jangkaan ialah kaedah itu hanya akan gagal disebabkan masalah akses fail atau masalah kebenaran, bukan semata-mata kerana direktori tidak kosong.
Isu terasnya ialah Directory.Delete
, walaupun dengan rekursif didayakan, tidak memadamkan fail dalam struktur direktori. Untuk melindungi daripada kehilangan data, ia mengutamakan pengalihan keluar direktori dan melangkau pemadaman fail.
Untuk memadamkan direktori dan kandungannya dengan pasti, fungsi tersuai diperlukan. Fungsi ini sepatutnya:
Pendekatan ini memastikan pengalihan keluar yang lengkap dan selamat bagi semua fail dan subfolder sebelum cuba memadamkan direktori utama.
Untuk keselamatan yang dipertingkatkan, hadkan direktori mana yang boleh dipadamkan. Mengehadkan pemadaman kepada lokasi sistem fail tertentu menghalang pengalihan keluar data kritikal secara tidak sengaja atau berniat jahat.
Fungsi berikut menunjukkan pemadaman direktori rekursif:
<code class="language-csharp">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); // Remove read-only attribute File.Delete(file); } foreach (string dir in dirs) { DeleteDirectory(dir); // Recursive call for subdirectories } Directory.Delete(target_dir, false); // Delete the directory itself (non-recursive) }</code>
Fungsi yang dipertingkatkan ini menangani batasan kaedah Directory.Delete
terbina dalam, menyediakan penyelesaian yang lebih dipercayai dan selamat untuk penyingkiran direktori rekursif.
Atas ialah kandungan terperinci Mengapakah `Directory.Delete(path, true)` Kadangkala Gagal Walaupun dengan Pemadaman Rekursif Didayakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!