Bu makalemizde dizinler içindeki dosyalari ve klasörleri listeleyen basit bir program yazacagiz. Programin anlatiminin yani sira yazdigimiz projeyi de indirerek inceleyebilirsiniz. Projeyi buradan indirebilirsiniz. Proje kaynak kodlarini ekledigim için makalede çok detaya girmeden ana kisimlari anlatmaya çalisacagim. Detaylari projeyi indirerek inceleyebilirsiniz. Gelelim Programimizi yazmaya.
Ilk olarak yeni bir Windows Form Application açiyoruz. Ismini DosyaIslemleri olarak belirleyip projemizi gelistirmeye basliyoruz. Ilk olarak ekran tasarimi ile baslayalim. Asagidaki resimde gördügünüz gibi listeleyecegimiz dosyalarin bulundugu dizini seçmek için bir “Gözat”butonu ve seçilen dizini göstermek içinde bir textbox ekledik. Seçilen dizindeki dosyalari liste halinde gösterebilmek için ise bir ListView kontrolünü sayfanin altina koyduk.
Gözat butonuna bastigimiz zaman bir FolderBrowserDialog açarak kullanicinin listelemek istedigi dizini seçmesini saglayacagiz. Bunun için gozat butonumuzun Click eventini asagidaki gibi dolduruyoruz.
private void gozatButton_Click(object sender, EventArgs e)
{
FolderBrowserDialog fBrowser = new FolderBrowserDialog();
fBrowser.ShowDialog();
string secilenDizin = fBrowser.SelectedPath;
secilenDizinTextBox.Text = secilenDizin;
DizinIceriginiListeyeEkle(secilenDizin);
}
Sira geldi DizinIceriginiListeyeEkle fonksiyonunun içerigini doldurmaya. Bu fonksiyon parametre olarak aldigi dizin içerisindeki klasör ve dosyalari bularak forma ekledigimiz listview üzerinde göstermemizi saglayacak. O zaman gelin fonksiyonun içerisini yazalim.
private void DizinIceriginiListeyeEkle(string dizin)
{
string[] dizindekiKlasorler = Directory.GetDirectories(dizin);
string[] dizindekiDosyalar = Directory.GetFiles(dizin);
foreach (string klasor in dizindekiKlasorler)
{
DirectoryInfo dirInfo = new DirectoryInfo(klasor);
string klasorAdi = dirInfo.Name;
DateTime olsTarihi = dirInfo.CreationTime;
ListViewItem item = new ListViewItem(klasorAdi);
item.SubItems.Add("Klasör");
item.SubItems.Add("");
item.SubItems.Add(olsTarihi.ToString("dd.MM.yyyy HH:mm"));
dizinIcerigiListView.Items.Add(item);
}
foreach (string dosya in dizindekiDosyalar)
{
FileInfo fileInfo = new FileInfo(dosya);
string dosyaAdi = fileInfo.Name;
long byteBoyut = fileInfo.Length;
DateTime olsTarihi = fileInfo.CreationTime;
ListViewItem item = new ListViewItem(dosyaAdi);
item.SubItems.Add("Dosya");
item.SubItems.Add(byteBoyut.ToString());
item.SubItems.Add(olsTarihi.ToString("dd.MM.yyyy HH:mm"));
dizinIcerigiListView.Items.Add(item);
}
}
Yukardaki koddada gördügünüz gibi ilk olarak Directory.GetDirectories, Directory.GetFiles özelliklerini kullanarak dizin içerisindeki klasor ve dosyalari ayri ayri string diziler içerisine atiyoruz. Bundan sonra yapacagimiz tek sey bu dizi içerisindeki bilgileri düzenleyerek listemize eklemek. GetDirectories ve GetFiles metotlari klasor veya dosyanin tam yolunu döndürür. Örnegin: C:\deneme\deneme.txt gibi. Bize dosyanin tam adi, olusturulma tarihi ve boyutu lazim oldugu için DirectoryInfo ve FileInfo siniflarini kullandik. Ekteki projeyi indirerek kodlari daha iyi incelemenizi tavsiye ederim.