Rumah > pembangunan bahagian belakang > C++ > Mengapakah Directory.Delete(true) Membuang 'Direktori Tidak Kosong'?

Mengapakah Directory.Delete(true) Membuang 'Direktori Tidak Kosong'?

Mary-Kate Olsen
Lepaskan: 2025-01-13 17:02:43
asal
985 orang telah melayarinya

Why Does Directory.Delete(true) Throw

Padam sepenuhnya direktori: had dan penyelesaian kaedah Direktori.Padam(benar)

Apabila menggunakan Directory.Delete(myPath, true) untuk memadamkan direktori secara rekursif, pembangun mungkin masih menemui pengecualian "direktori tidak kosong" walaupun recursive ditetapkan kepada true. Ini membingungkan kerana kaedah ini bertujuan untuk memadam semua kandungan direktori sebelum memadamkannya.

Analisis Punca

Tingkah laku dalam soalan timbul daripada batasan kaedah Directory.Delete. Kaedah ini direka untuk hanya membenarkan direktori kosong dipadamkan, manakala fail dan subdirektori dalam direktori sasaran tidak terjejas. Apabila recursive ialah true , Directory.Delete akan cuba memadam mana-mana subdirektori yang tidak kosong, tetapi tidak akan memadamkan fail.

Penyelesaian

Untuk menyelesaikan masalah ini, anda boleh menggunakan fungsi rekursif yang memadamkan fail dan subdirektori secara eksplisit sebelum cuba memadamkan direktori induk. Coretan kod berikut menunjukkan pendekatan ini:

<code class="language-csharp">public static void DeleteDirectory(string target_dir)
{
    string[] files = Directory.GetFiles(target_dir);
    string[] directories = Directory.GetDirectories(target_dir);

    foreach (string file in files)
    {
        File.Delete(file); // 删除所有文件
    }

    foreach (string directory in directories)
    {
        DeleteDirectory(directory); // 递归删除子目录
    }

    Directory.Delete(target_dir, false); // 删除空父目录
}</code>
Salin selepas log masuk

Dengan memadamkan fail dan subdirektori terlebih dahulu secara eksplisit, kami memastikan direktori induk kosong sebelum cuba memadamkannya. Pendekatan ini menyelesaikan pengecualian "direktori tidak kosong" yang berlaku apabila menggunakan Directory.Delete(true).

Atas ialah kandungan terperinci Mengapakah Directory.Delete(true) Membuang '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