Dizin Içerisindeki Klasör ve Dosyalari Listeleme.

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.

.

Örnek Proje 38.5 KB

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…

 

31 thoughts on “Dizin Içerisindeki Klasör ve Dosyalari Listeleme.

  1. La bende niye hata veriyor ki kodu aynen yazıyorum ama hata veriyor acaba yanlış yere mi yazıyorum aw

  2. isim vermeden c:\ içersimde  alfabetik olarak en üstteki klasörün yolunu göstememiz lazim

  3. 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 🙂

     

  4. Merhaba,

     

    Peki listeledigimiz bu dosyalari bir sil buttonu koyarak nasil silebiliriz?

    Tesekkürler.

  5. 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

  6. 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.

  7. 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 ?

  8. 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.

  9. 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

    Bu yüzden "çoooooooooooooookkkk" uzun ve sancili bir kod yazmak gerekiyor yok git dosya bossa içini sil dosyanin içinde
    baska bir dosya varsa onun içine gir onlarida sil sonra o dosyayi sil sonra ilk dosyayi sil vs. vs. :S algoritma canavari yani 😀
    neyse bunun daha kisa yoldan bir yolu varmidir.
    Kolay gelsin..
  10. Tam da böyle bir kod ariyordum. Bir projemde dizinler olusturmam ve yönetmem gerekiyor. Çok isime yarayacak. Tesekkürler.

HakkiX için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir