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.
Bir sonraki makalemizde görüsmek üzere…
La bende niye hata veriyor ki kodu aynen yazıyorum ama hata veriyor acaba yanlış yere mi yazıyorum aw
10 yıl sonra bile faydalı oldu, teşekkürler.
Tamam kusura bakmayyn, geliyorum karde?.
Tamam kusura bakmayyn Güngör özele gel
Beyler kavganyza özelden devam ederseniz sevinirim.
Bana soracaksyn tabii kime soracaksyn?
Ystedi?im gibi konu?urum karde?im sana my soraca?ym?
Ne demek sanane nasyl konu?uyorsun sen benle böyle?
Sanane
Bende iyiyim nasyl gidiyor
Yyiyim Batuhan sen
Naber
Merhaba Batuhan
Merhaba te?ekkürler
isim vermeden c:\ içersimde alfabetik olarak en üstteki klasörün yolunu göstememiz lazim
butonun click i ne yazdigimiz DizinIceriginiListeyeEkle de hata verio bide private void DizinIceriginiListeyeEkle(string dizin) i nin nereye yazacagiz ben yapamadim yardim istiyorum simdiden tsk 🙂
File.Delete("dosya tam yolu") metodunu kullanabilirsin
Merhaba,
Peki listeledigimiz bu dosyalari bir sil buttonu koyarak nasil silebiliriz?
Tesekkürler.
Tesekkürler…
Tesekkürler
Dosyalarin MD5 hash bilgilerini nasil alabiliriz
Dosyalarda "Title, Subject, Author, Keywords, Comments, Catagory, Source, Revision Number, Last Saved By, Manager, Company, Create Time/Date, Last saved Time/Date, Total Editing Time, Last Printed" gibi dosya bilgilerini nasil alabiliriz
listviewi dolduruken ayni sira ile dosya bilgilerinide bir listviewde tutabilisin. böylece listviewde secilen index numarasi ile bu listeye gidersen seçili olan dosyanin tam yolunu ve diger bilgilerini bulabilirsin.
Peki GetFiles ile seçili dosyanin tam adini nasil alacagiz ki ?? Kullanici list view içinde listelenmis dosyalardan birini seçecek ama hangisini seçtigini nasil bilip sonrasnda GetFiles ile dosyanin tam yolunu alabilirim ?
Listview içindeki sabit ad boyut ve türü hangi özelligi ile koymam gerekiyor ? tüm (collection) ifadeli özellikleri denedim. Tesekkürler.
seklinde mesaj atacaktim ki buldum, Allowdrop a true, view özelligine de details demek gerekiyormus daha sonra columns içine atacaklarimiz istedigimiz semayi verir.
çok tesekkürlerler
Merhaba Hakki,
Directory.Delete("KlasorYolu",true);
Hepsi bu.
Kolay Gelsin
Bir HDD miz var var hdd deki tüm dosyalari silmek istiyoruz..
Bunun için Diroctery.Delete("Dosya uzantisi") dedigimiz zaman dosyayi silebilmesi için dosyanin bos olmasi gerekiyor
tesekkürler güzel insan
Faydali Olabildiysek ne mutlu. Kolay gelsin.
Tam da böyle bir kod ariyordum. Bir projemde dizinler olusturmam ve yönetmem gerekiyor. Çok isime yarayacak. Tesekkürler.