Rumah > pembangunan bahagian belakang > C++ > Mengapa Directory.Delete(myPath, true) Gagal dengan 'Direktori tidak kosong'?

Mengapa Directory.Delete(myPath, true) Gagal dengan 'Direktori tidak kosong'?

Mary-Kate Olsen
Lepaskan: 2025-01-13 17:12:44
asal
563 orang telah melayarinya

Why Does Directory.Delete(myPath, true) Fail with

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);
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan