Son Haberler
Anasayfa / Yazılım / ASP.NET / DirectoryInfo ve FileInfo Sınıfları

DirectoryInfo ve FileInfo Sınıfları

ASP.NET ortamında da dosyalarla alakalı olarak dosyaların buludnuğu klasörleri, klasör içinde yer alan diğer dosyaları, bu dosyaların yolları gibi dosyalra, klasörlere ait bilgileri edinebiliriz. Bunun için System.IO namespace alanı kullanılır. Dolayısı ile DirectoryInfo veya FileInfo gibi classları kullanmamız gerekiyor ise projelerimizin kod alanında üstte yer alan kısımda namespace alanına System.IO; namespace eklenmelidir.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;

gibi..

Şimdi adım adım sıra ile bu sınıflara değinelim.

DirectoryInfo : DirectoryInfo sınıfı ile tek bir klasör için bilgileri elde edebiliriz.
FileInfo : FileInfo sınıfı da tek bir dosya için bilgi almak amacı ile kullanılmaktadır.

Program kod parçacıkları ile bu yazıma devam edeyim. Örneğin C:\\’de yer alan tüm klasörlerin adını bir listboxa alalım.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;


public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        DirectoryInfo di = new DirectoryInfo("C:\\");
        DirectoryInfo[] klasorler = di.GetDirectories();
        foreach (DirectoryInfo klasor in klasorler)
        {
            ListBox1.Items.Add(klasor.Name);
        }
    }
}

Burada ne yaptık anlatayım. DirecToryInfo classı ile bir di adında yeni bir instance alarak kendi sınıfımı oluşturdum. Yol olarak bilgisayarımda yer alan C:\\ altındaki klasörleri bulacağım. Daha sonra DirectoryInfo tipinde klasorler adında bir DirectoryInfo koleksiyonu oluşturdum. Daha sonra bu DirectoryInfo koleksiyonuma C:\\ altında yer alan klasörlerin adını çektim. Bunu da sonra foreach döngüsü ile koleksiyon içinde dönerek listboxa aktardım.

Burada sadece isim bilgisi değil bir çok bilgiyi alabilirim, tabi hepsini burada açıklamak şu an için mümkün değil. Ancak bir klasörün son değiştirilme tarihi, oluşturulma tarihi, klasöre son erişim tarihi, kök klasörü, bir klasör altında ek klasör oluşturma vb bir çok işlem yapılabilir.

Şimdi de Windows dizini altında yer alan dosyaların adlarını çekelim.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;


public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        DirectoryInfo di = new DirectoryInfo("C:\\Windows");
        FileInfo[] fi = di.GetFiles();

        foreach (FileInfo dosyalar in fi)
        {
            ListBox1.Items.Add(dosyalar.Name);
        }
       
    }
}

Tabi bir web projesi bir server üzerinde yayınlanır. Dolayısı ile bu server üzerindeki dosya, klasör yapısını bilmeyiz. Ama diyelim ki kendi web sitemizin klasörleri ya da dosyaları hakkında bilgi almak istiyoruz. Ne yapacağız?

Bunun için Server.MapPath kullanılır. Böylelikle kendi uygulamamız için bilgi alabiliriz. Örneğin WEB projemizde images klasörleri olmuş olsun, içinde de dosyalar olmuş olsun ve biz bu dosyaların isimlerini öğrenmek istiyoruz. Bunun için kod bloğumuz şöyle olur :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;


public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        DirectoryInfo di = new DirectoryInfo(Server.MapPath("images"));
        FileInfo[] fi = di.GetFiles();

        foreach (FileInfo dosyalar in fi)
        {
            ListBox1.Items.Add(dosyalar.Name);
        }
       
    }
}

Bir cevap yazın

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