SORU
30 Kasım 2008, Pazar


Dizin ile dizin silinemiyor.Sil(doğru yol)

Kullanıyorum .NET yinelemeli olarak kullanarak bir dizini silmeye çalışırken 3.5,:

Directory.Delete(myPath, true);

Benim anladığım bu dosya kullanımda veya izinleri ile ilgili bir sorun varsa atmak gerekir, ancak aksi takdirde dizin ve tüm içeriğini silmek gerekir.

Ancak, ben zaman zaman şunu dinle:

System.IO.IOException: The directory is not empty.
    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
    at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive)
    at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive)
    ...

Bu yöntem bazen atar şaşırmadım, ama özyinelemeli doğru olduğunda bu özel mesaj almak beni şaşırttı. (Benbiliyorumdizin boş değil.)

AccessViolationException yerine bunu görmek istiyorum bir nedeni var mı?

CEVAP
30 Kasım 2008, Pazar


Bu sorunla daha önce karşılaştım.

Sorunun kökü bu fonksiyon, dizin yapısı içinde olan dosyaları silmez. Bunu yapmak için neye ihtiyacınız dizin yapısını sonra dizinin kendisi çıkarmadan önce tüm dizinlerin içindeki tüm dosyaları silen bir fonksiyon oluşturun. Bu ikinci parametre aykırı olduğunu biliyorum ama çok daha güvenli bir yaklaşım. Buna ek olarak, muhtemelen onları silmeden önce bu dosyaları salt OKUNUR erişim öznitelikleri kaldırmak isteyeceksiniz. Aksi halde bir özel durum oluşturmak.

Sadece tokat bu projenize kod.

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);
}

Ayrıca, benim için biri C:\WINDOWS (%WinDir%) C:\ Bu işlevi çağırmak istiyorsun çünkü silinecek izin verilen şahsen makine alanlarında kısıtlama ekleyin.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Paulo Bautista

    Paulo Bautis

    21 Aralık 2008
  • UKF Dubstep

    UKF Dubstep

    29 NİSAN 2009
  • Vagrant Records

    Vagrant Reco

    8 Mayıs 2006