A
B
C
Ç
D
E
F
G
Ğ
H
I
İ
J
K
L
M
N
O
P
R
S
Ş
T
U
Ü
V
Y
Z
Q
W
X
+ Ekle
C# Klasör ve Dosya Listeleme

C# Klasör ve Dosya Listeleme

 Klasör ve dosyaları listelemek için basit bir file browser oluşturalım.  Proje dosyasını BURADAN
 indirebilirsiniz.

1 x TextBox  , 3 x Button  , 1 x ListViw   Ekran görüntüsü;


Dizinleri kaydetmek için dizinKlasörler dizisi ve dizinler arasında ileri geri yapılabilmesi içinde dizinTemp listesini oluşturuyoruz.

string[] dizinKlasorler=new string[1000];
List dizinTemp=new List();

FormLoad() metodunu oluşturalım;

 private void frmDosyaIcerik_Load(object sender, EventArgs e)
        {
            lvListe.Columns.Add("Ad           lvListe.Columns.Add("Tür           lvListe.Columns.Add("Boyut           lvListe.Columns.Add("Oluşturmahi");
            lvListe.Columns[0].Width = 150;
            lvListe.Columns[1].Width = 120;
            lvListe.Columns[2].Width = 150;
            lvListe.Columns[3].Width = 120;
            tbDizin.Text = "C:\";
            dizinIcerigiListele(tbDizin.Text);

        }

Listelenmesini istediğimiz dizini seçmek için FolderBrowserDialog kullandık.Gözat butonunun Click olayına aşağıdaki kodları yazıyoruz.

 private void btnGozat_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog folderBrowser = new FolderBrowserDialog();
            folderBrowser.ShowDialog();
            tbDizin.Text = folderBrowser.SelectedPath;
            if (tbDizin.Text == "") { MessageBox.Show("Dizinlmedi"); }
            else { dizinIcerigiListele(tbDizin.Text); }
        }

dizinIcerigiListele() metodunun içeriğini yazalım.

 private void dizinIcerigiListele(string dizin)
        {
            try
            {
                dizinKlasorler = Directory.GetDirectories(dizin);
                string[] dizinDosyalar = Directory.GetFiles(dizin);
                dizinTemp.Add(dizin);
                lvListe.Items.Clear();

                foreach (string klasor in dizinKlasorler)
                {
                    DirectoryInfo directoryInfo = new DirectoryInfo(klasor);
                    string klasorAdi = directoryInfo.Name;
                    DateTime olusturmaTarihi = directoryInfo.CreationTime;

                    ListViewItem item = new ListViewItem(klasorAdi);
                    item.SubItems.Add("Klasör                   item.SubItems.Add("");
                    item.SubItems.Add(olusturmaTarihi.ToString("dd.MM.yyyym"));
                    lvListe.Items.Add(item);
                }

                foreach (string dosya in dizinDosyalar)
                {
                    FileInfo fileInfo = new FileInfo(dosya);
                    string dosyaAdi = fileInfo.Name;
                    long boyut = fileInfo.Length;

                    DateTime olusturulmaTarihi = fileInfo.CreationTime;

                    ListViewItem item = new ListViewItem(dosyaAdi);
                    item.SubItems.Add("Dosya                   item.SubItems.Add(boyut.ToString());
                    item.SubItems.Add(olusturulmaTarihi.ToString("dd.MM.yyyym"));
                    lvListe.Items.Add(item);
                }
            }
            catch
            {
                MessageBox.Show("Erişimnu Olabilir");
                tbDizin.Text = "C:\";
                dizinTemp.Clear();
                dizinIcerigiListele(tbDizin.Text);
            }
        }

Directory.GetDirectories, Directory.GetFiles metodlarını kullanarak dizin içerisindeki klasör ve dosyaları diziye attık.DirectoryInfo ve FileInfo sınıflarınıda dosya yada klasör adı, oluşturma tarihi, boyutu gibi özellikleri almak için kullandık.

Liste üzerinde seçilen klasör dizinini listelemek için ListView in SelectedIndexChanged olayına aşağıdaki kodları yazıyoruz.

  private void lvListe_SelectedIndexChanged(object sender, EventArgs e)
        {
           try{
            tbDizin.Text = dizinKlasorler[lvListe.SelectedItems[0].Index];
            dizinIcerigiListele(tbDizin.Text);
            }
          catch
            { MessageBox.Show("Hata:Dizinlemedi");}
        }

Son olarakta İleri ve Geri butonlarının Click olayına aşağıdaki kodları yazıyoruz.

private void btnGeri_Click(object sender, EventArgs e)
        {
            try
            {
                dizinIcerigiListele(dizinTemp[dizinTemp.IndexOf(tbDizin.Text) - 1]);
                tbDizin.Text = dizinTemp[dizinTemp.IndexOf(tbDizin.Text) - 1];
            }
            catch
            {
                MessageBox.Show("Hata:Gerie işlemi başarısız.");
            }
        }

        private void btnIleri_Click(object sender, EventArgs e)
        {
            try
            {
                dizinIcerigiListele(dizinTemp[dizinTemp.IndexOf(tbDizin.Text) + 1]);
                tbDizin.Text = dizinTemp[dizinTemp.IndexOf(tbDizin.Text) + 1];
            }
            catch
            {
                MessageBox.Show("Hata:İleri işlemi başarısız");
            }
        }

İleri butonu için dizinTemp listesinden geçerli dizinin indexini bulup bir sonraki dizini aldık geri butonu içinde aynı şekilde listeden geçerli dizinin indexinden bir önceki dizini aldık.

  Ad Soyad
  Yorum