C# ile klasör içindeki tüm dosyalar nasıl silinir?

toprak34 (2031) 6 yıl önce sordu

Merhaba,

C#'da klasör içindeki dosyaları silmek istiyorum. Yapmak istediğim şey butona tıklanınca C:\Users\username\AppData\Local\Temp klasörünün içindekileri temizlemek. Bir nevi CCleaner benzeri bir program oluyor. İnternetteki kodları denedim ancak çalışmadı. Bunu nasıl yapabilirim?

@alattin

Toplam 1 cevap


alattin (17127) 6 yıl önce cevapladı

Bir klasörün içindeki tüm dosyaları C# ile şu şekilde silebilirsin:

System.IO.DirectoryInfo klasor = new DirectoryInfo(@"C:\Temp");

foreach (FileInfo dosya in klasor.GetFiles())
{
    dosya.Delete(); 
}
foreach (DirectoryInfo k in klasor.GetDirectories())
{
    k.Delete(true); 
}

Önce klasör içindeki dosyaları sonra da klasör içindeki diğer dizinleri silmen gerekir.

C# ile Temp klasörü nasıl temizlenir?

Aşağıdaki C# ile Windows temp klasörünü temizyebilirsiniz:

 MessageBox.Show(Path.GetTempPath() + " klasörü temizleniyor");
            System.IO.DirectoryInfo klasor = new DirectoryInfo(Path.GetTempPath());

            foreach (FileInfo dosya in klasor.GetFiles())
            {
                try
                {
                    dosya.Delete();
                }
                catch (Exception)
                {


                }

            }
            foreach (DirectoryInfo k in klasor.GetDirectories())
            {
                try
                {
                    k.Delete(true);
                }
                catch (Exception)
                {


                }

            }
            MessageBox.Show(Path.GetTempPath() + " klasörü temizlendi.");
        }

Bu kod içinde yeralan

Path.GetTempPath()

Metodu Temp klasörünün yolunu verir. Kullanımda olan dosyalar hata vereceğinden ve silinemeyeceğinden dolayı try- catch blokları hatalardan kodumuzu koruyacaktır.

 

toprak34 6 yıl önce

@alattin ("C:\Temp") yazan yerde hata veriyor. Ters \ 'ı kabul etmiyor sanırım \'ın altında kırmızı çizgi var. Hata: Unrecognized escape sequence

alattin 6 yıl önce

Çift \ koyarsan sorun düzelir, unutmuşum. Kodu düzelttim @toprak34

alattin 6 yıl önce

Veya alternatif olarak şöyle yazabilirsin @"C:\Temp"

toprak34 6 yıl önce

@alattin abi böyle bi hata verdi, http://i.hizliresim.com/Ygnjy6.png

alattin 6 yıl önce

C:\Temp klasörün var mı ben onu örnek olarak yazmıştım, sen kendine göre hangi klasörü sildirmek istiyorsan onu ayarla @toprak34

alattin 6 yıl önce

@toprak34 tam kodu yazdım sana

toprak34 6 yıl önce

@alattin Çok teşekkürler abi oldu :)

alattin 6 yıl önce

ne demek Çekirge :) @toprak34

toprak34 6 yıl önce

@alattin :)

toprak34 6 yıl önce

@alattin abi bir de geçmişi otomatik temizleyebiliyormuyuz C#'ta? Tarayıcı geçmişi vs. Programa bunu da eklemeyi düşünüyorum

alattin 6 yıl önce

C# da bunu otomatik yapamazsın, ama tarayıcıların kendine has temizlik rutinleri vardır. Bunu araştırarak C# ile uygulatabilirsin. Firefox, Chrome vb. her tarayıcıda bu farklı olabilir @toprak34

toprak34 6 yıl önce

@alattin bu kod chrome cookilerini siler mi? string ChromeDir=@"C:\Users\{0}\AppData\Local\Google\Chrome\User Data"; string yol = string.Format(ChromeDir, Environment.UserName); if (Directory.Exists(yol)) { foreach (string dosyaYolu in Directory.GetFiles(yol)) File.Delete(dosyaYolu); }

alattin 6 yıl önce

@toprak34 bunları ayrı soru olarak sorarsan daha iyi olur. Yorum bölümünde hoş görünmüyor

csharp 1 yıl önce

Aynı Koda ChexBox Seçili İse Nasıl Ekleyebilirim? Yani Chexbox Seçili ise Butona Basıldığında Silsin Seçili Değilse Silmesin ? CheckBox1.Checked = true özelliğini kullanmak istiyorum