Boş Dizinleri Listele ve Sil (C#)

Bilgisayarımızda bazı klasörlerin boş durması temizlenmesi gereken çöpler gibi bir his verir insana. Boş klasörleri bulup silen üçüncü parti yazılımlar mevcuttur. Ancak bu işi kendi uygulamamıza da yaptırmak istersek nasıl yapabiliriz.

Bilgisayarımızdaki boş klasörleri bulup temizlemek için örnek bir Windows Form Proje oluşturalım. Formunuza iki buton, listbox ekleyelim.
dizin sec

Öncelikle using alanına
[cc lang=”csharp”]
using System.IO;
using System.Linq;
[/cc]
tanımamalarını yapalım.

Dizin seç butonun Click olayına aşağıdaki kodları ekleyelim. Açıklamalar yorum satırı olarak verildi.

[cc lang=”csharp”]
FolderBrowserDialog folder = new FolderBrowserDialog();
//Dizinleri seçmek için
DialogResult result = folder.ShowDialog();

// Dizin Tamam – Ok butonuna tıklanarak seçildiyse
if (result == DialogResult.OK)
{
string secilenDizin = folder.SelectedPath;
string[] dizinler = Directory.GetDirectories(secilenDizin, “*”, SearchOption.AllDirectories); // Tüm alt dizinlerle listeler (Sadece seçili dizindekileri listelemek için “SearchOption.TopDirectoryOnly”)
foreach (var dizin in dizinler)
{
//dizinin altında başka dizinler varmı kontrol etmek için
string[] altDizin = Directory.GetDirectories(dizin, “*”, SearchOption.AllDirectories);

//dizin altındaki dosyaları tut.
string[] files = Directory.GetFiles(dizin);

//alt dizin veya dosya yoksa dizine ekle.
if (!files.Any() && !altDizin.Any())
lbBosDizinler.Items.Add(dizin);
}
//taramanın tamamlandığını bildirmek için.
MessageBox.Show(“Boş dizin taramam tamamlandı.”);
}
[/cc]

Listelenen boş dizinleri silmek için boş dizinleri sil Click olayına aşağıdaki kodları ekleyelim.

[cc lang=”csharp”]
foreach (string dizin in lbBosDizinler.Items)
{
Directory.Delete(dizin);
}
lbBosDizinler.Items.Clear();
MessageBox.Show(“Boş dizinler silindi.”);
[/cc]

Dilerseniz bir ProgressBar ekleyerek görselleştirebilirsiniz.

Örnek proje için tıklayınız.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak.