ListView Dosya ve Klasörleri Listeleme

İstanbullu

Yeni Üye
Bu uygulamamızda sizlerle C# ListView kullanımı, aynı zamanda yapmış olduğumuz örnek ile neler yapılabileceğini anlatmaya çalışacağım.
En basit şekilde ListView nesnemize bir örnek verecek olursak her zaman kullandığımız Windows işletim sistemimizin Dosya Gezginini örnek verebiliriz. Nasıl ki Dosya Gezgininin de Görünüm sekmesinden istediğimiz gibi klasör ve dosyaları listeleme yapabiliyorsak aynısını kendi uygulamamızda da uygulayabiliriz.

Uygulamamıza geçmeden önce bu projede ne yapacağız? Bu uygulamamızda seçmiş olduğumuz dosya ve klasörlerin içinde neler olduğunu C# ListView nesnemize aktaracağız. Burada ListView görünümü Details olarak ayarlayacağız ve bu sayede dosya veya dizinlerimizin içinde hangi klasörlerin hangi türde olduğunu, boyutlarını, oluşturulma tarihlerini görebileceğiz. Daha sonra ListView ekranında görmüş olduğumuz dosyaları veya uygulamaları DoubleClick metodunu kullanarak açmaya çalışacağız. Bu sayede en basit örnek ile aslında ListView nesnemizin ne işe yaradığını en iyi şekilde görmüş olacağız. Hadi Başlayalım !

Bunun için ilk olarak C# Form Uygulaması oluşturup formumuzu hazırlayalım. Formumuz da 2 adet Label, 1 adet Textbox, 1 adet Buton, 1 adet ListView kullanacağız. Ben formumu bu şekilde tasarladım.
C# ListView Dosya ve Dizin İşlemleri
Form uygulamamızı bu şekilde hazırladıktan sonra artık programın kodlarına geçebiliriz.

using System.IO;

Yukarıda bilgisayarımızın içindeki belgelere erişebilmek için IO[Input ve Output] kütüphanemizi uygulamamıza ekledik.

private void Button1_Click(object sender, EventArgs e)
{
FolderBrowserDialog folderBrowser = new FolderBrowserDialog();
folderBrowser.ShowDialog();
string secilenDizin = folderBrowser.SelectedPath;
txtUzanti.Text = secilenDizin;
cagırılacakDizin(secilenDizin);
}
Butona tıkladığımızda uygulanacak olan kodlarımızı yazıyoruz. Burada FolderBrowserDialog nesnemiz bir pencere açacak ve bir dizin veya klasörümüzü seçmemizi isteyecek. Seçtiğimiz dizini uygulamamızdaki gerekli alanlara gönderip çıktı almamızı sağlayacak.
private void cagırılacakDizin(string dizin)
{
string[] dizindekiKlasorler = Directory.GetDirectories(dizin);
string[] dizindekiDosyalar = Directory.GetFiles(dizin);

foreach (string klasor in dizindekiKlasorler)
{

DirectoryInfo directoryInfo = new DirectoryInfo(klasor);
string klasorAdi = directoryInfo.Name;
DateTime olusturulmaTarihi = directoryInfo.CreationTime;
string dosyaYolu = folderBrowserDialog1.SelectedPath;

ListViewItem item = new ListViewItem(klasorAdi);
item.SubItems.Add("Klasör");
item.SubItems.Add(dosyaYolu);
item.SubItems.Add(olusturulmaTarihi.ToString("dd.MM.yyyy HH:mm"));
listView1.Items.Add(item);
}

foreach (string dosya in dizindekiDosyalar)
{
FileInfo fileInfo = new FileInfo(dosya);
string dosyaAdi = fileInfo.Name;
long byteBoyut = fileInfo.Length;
DateTime olusturulmaTarihi = fileInfo.CreationTime;

ListViewItem item = new ListViewItem(dosyaAdi);
item.SubItems.Add("Dosya");
item.SubItems.Add(byteBoyut.ToString());
item.SubItems.Add(olusturulmaTarihi.ToString("dd.MM.yyyy HH:mm"));
listView1.Items.Add(item);
}
}
Yukarıdaki vermiş olduğum kod satırlarında ise ilk olarak klasör ve dosyaları ayırt etmemiz için 2 tane string tanımlama yapıyoruz. Bu sayede dizin içindeki belgelerin türüne karar vermiş oluyoruz. Foreach karar yapılarımızın içinde de string array olarak oluşturduğumuz dosyaları taratıp bunların isimlerini, boyutlarını, oluşturulma tarihlerini FileInfo sınıfımızın özellikleri sayesinde alıyoruz. Programı çalıştırıp dizin seçtiğimizde aşağıdaki gibi bir ekran karşımıza gelecek.
C# ListView Dosya ve Dizin Listeleme 2

ListView nesnemizin DoubleClick metoduyla aynı Dosya Gezginindeki gibi dosyalarımızı artık buradan açabileceğiz bunun için yapmanız gereken tıkladığınız satırın Ad kolonunu alıp yukarıdaki dosya yolu birleştirmeniz ve sonrasında sitemizde bulunan C# İle Program Açma makalemize giderek kodu bu uygulamamıza dahil etmek olacaktır.

lblTıklanan.Text = txtUzanti.Text.ToString()+ @"\"+ listView1.SelectedItems[0]
.SubItems[0].Text.ToString();
string myPath = lblTıklanan.Text.ToString();
System.Diagnostics.Process islem = new System.Diagnostics.Process();
islem.StartInfo.FileName = myPath;
islem.Start();
C# ListView İşlemleri 3