File, FileInfo, Directory, DirectoryInfo, DriveInfo sınıflarını inceliyoruz.

DriveInfo Sınıfı

DriveInfo ile sistemimizde bulunan sürücülerin özelliklerini görebiliriz.Doğal olarak bu sürücülerin özelliklerini değiştirme gibi yetkiye sahip değiliz.

Sürücülerimizin özelliklerini elde etmek istiyorsak, öncelikle sürücüleri elde etmemiz gerekiyor.O yüzden öncelikle sürücülerimizi çekelim.GetDrives() metodu ile tüm tüm sürücüleri DriveInfo[] dizisi şeklinde elde edebiliriz.

DriveInfo[] Suruculer = DriveInfo.GetDrives();
//Sürücüleri elde ettik.Artık bütün sürücülerin özelliklerini inceleyebiliriz.
            foreach (DriveInfo item in Suruculer)
            {
                MessageBox.Show(item.Name + " " + item.DriveType);
            }

DirectoryInfo Sınıfı

Klasör hakkında bilgiler alamıza yarayan sınıftır.
Aşağıdaki kod bloklarını inceleyiniz.
Klasör oluşturmak istiyorsak eğer,

DirectoryInfo KlasorBilgileri = new DirectoryInfo("C:\\Dosya\\A");
//C dizininde A adında bir klasörüm mevcut.
KlasorBilgileri.CreateSubdirectory("AA");
//A adındaki klasörüme AA adında yeni bir klasör oluşturuyorum.

İstenilen dizindeki dosyaların bilgilerini çekmek istiyorsak eğer,GetFiles() metodunu kullanmalıyız.FileInfo[] dizisi geri döner.Bu yüzden FileInfo tipinde gelen nesnelerimizin bütün özelliklerine ulaşabilirim.

DirectoryInfo KlasorBilgileri = new DirectoryInfo("C:\\Dosya");
FileInfo[] Klasorler = KlasorBilgileri.GetFiles();
for (int i = 0; i < Klasorler.Length; i++)
{
    MessageBox.Show(Klasorler[i].FullName);
}

Yukardaki kod ile verilen dizindeki bütün dosyalar gelecektir.Ancak ben sadece txt uzantılı dosyaların gelmesini istiyorsam, GetFiles() metodunun diğer overloadına, GetFiles(“*.txt”) şeklinde parametre yazılmalıdır.

Alt klasörlere erişmek istiyorsak eğer,

DirectoryInfo KlasorBilgileri = new DirectoryInfo("C:\\Dosya");
DirectoryInfo[] AltKlasorler = KlasorBilgileri.GetDirectories();
foreach (DirectoryInfo item in AltKlasorler)
{
    MessageBox.Show(item.Name + " " + item.CreationTime);
}

Directory Sınıfı

Klasör oluşturma,silme,taşıma ve kopyalama gibi işlemleri Directory sınıfı yapmamızı sağlar.Static bir sınıftır.Directory sınıfının tüm elemanları metodlardan oluşmaktadır.Yani property(özellik) mevcut değildir.Directory sınıfını kullanabilmek için, System.IO namespaceini projenize eklemeniz gerekmektedir.

Şimdi klasör varmı yokmu onu kontrol edelim ve klasör oluşturmayı görelim.

if (!Directory.Exists("C:\\Dosya"))
//Exits metodu ile klasör var mı yok mu kontrol edilir.Varsa True, yoksa False döner.
            {
                Directory.CreateDirectory("C:\\Dosya");
//CreateDirectory metodu ile klasör oluşturulur.
            }

Şimdide bir klasörün alt klasörlerine ulaşmayı görelim.Formumuza ListBox nesnesi ekleyerek, alt klasörleri bu ListBox nesnesinde gösterelim.Ben C:\Dosya dizininin altına, “A”,”B”,”C” ve “D” adında klasörler oluşturdum.Şimdi bunlara ulaşalım.

string[] AltKlasorler = Directory.GetDirectories("C:\\Dosya");
//GetDirectories metodu ile C:\Dosya klasöründeki alt klasörlere ulaşabiliyoruz.
//Alt klasör isimleri string dizisi olarak geri döndüğünden string dizisine attım.
            for (int i = 0; i < AltKlasorler.Length; i++)
            {
                listBox1.Items.Add(AltKlasorler[i]);
            }

Alt klasörlerin ListBox nesnesinde görüldüğü hali.
GetDirectories metodunun bir diğer overloadındaki özellik ise, belirli şartlara uygun arama işlemi yapabiliriz.
Örnek olarak,

string[] AltKlasorler = Directory.GetDirectories("C:\\Dosya","A*");
for (int i = 0; i < AltKlasorler.Length; i++)
{
    listBox1.Items.Add(AltKlasorler[i]);
}

yukarıdaki gibi bir işlem uygularsak,isminin ilk harfi “A” olan, gerisi mühim olmayan alt klasör isimlerini getirecektir.Bu durumda ListBox nesnemizde sadece “A” klasörü gözükecektir.

Çalışan programın yolunu, çalıştığı dizini öğrenmek istiyorsak, GetCurrentDirectory() metodunu kullanmalıyız.

MessageBox.Show(Directory.GetCurrentDirectory());

Yukarıdaki kodu çalıştırırsanız eğer, “C:\Users\Gençay\documents\visual studio 2010\Projects\Directory\Directory\bin\Debug” gibi bir yol ile karşılaşabilirsiniz.Demek ki, benim şuanda kodlarımı çalıştırdığım programımın yolu bu yolmuş 

Klasör altındaki dosyaları listeletmek için, GetFiles() metodunu kullanmalıyız.
C:\Dosya klasörünün altına, “E.txt”,”F.txt”,”G.pub” ve “H.zip” isminde dörttane dosya ekliyorum.
Şimdi bu dosyaları okuyup ListBox nesnemize yazdıralım.

string[] KlasorIcindekiDosyalar = Directory.GetFiles("C:\\Dosya");
for (int i = 0; i < KlasorIcindekiDosyalar.Length; i++)
{
    listBox1.Items.Add(KlasorIcindekiDosyalar[i]);
}

Yukarıdaki kod bloğunu çalıştırdığımız zaman ListBox nesnemizin son görüntüsü aşağıdaki gibi olacaktır.

GetFiles() metodunun bir diğer overloadından da bahsetmek istiyorum.Klasörün içindeki dosyaları listelerken belirli bir şarta göre listeleme yapabiliriz.Örneğin, aşağıdaki kod bloğu, adı ne olursa olsun ancak uzantısı .txt olan dosyaları getirecektir.

string[] KlasorIcindekiDosyalar = Directory.GetFiles("C:\\Dosya","*.txt");
for (int i = 0; i < KlasorIcindekiDosyalar.Length; i++)
{
    listBox1.Items.Add(KlasorIcindekiDosyalar[i]);
}

Bir klasörün kök dizinini, daha açık şekilde kök sürücüsünü bulmak istediğimizde, GetDirectoryRoot() metodunu kullanıyoruz.

Directory.GetDirectoryRoot("C:\\Dosya")
/*--*/
Directory.GetDirectoryRoot("C:\\Dosya\\A")

Yukarıdaki kodların çıktısı C:\ olacaktır.

Bir üst klasörün adını bulmak için ise, GetParent() metodunu kullanacağız.

Directory.GetParent("C:\\Dosya\\A")

Yukarıdaki kodu yazdırırsak eğer, C:\Dosya yazısını göreceğiz.

Son olarak bilgisayarın sürücülerine erişmeyi görelim.

string[] TumSuruculer = Directory.GetLogicalDrives();
for (int i = 0; i < TumSuruculer.Length; i++)
{
listBox1.Items.Add(TumSuruculer[i]);
}

GetLogicalDrives metodu ile bilgisayarınızdaki tüm sürücüleri string[] dizisi şeklinde alabiliyorsunuz.

FileInfo Sınıfı

Dosya hakkında bilgi almak ve gerekirse o bilgileri güncellemek için FileInfo sınıfı kullanılır.FileInfo sınıfını kullanabilmek için System.IO namespaceini projemize eklemeliyiz.

Teker teker özelliklerine değinip açıklamaktansa, Form üzerine yerleştirdiğim bir ListBox nesnesine, herhangi bir dosyanın bütün bilgilerini, gerekli metodlarla yazdıracağım.
Dediğim gibi formumuza bir tane ListBox nesnesi yerleştirdikten sonra aşağıdaki kodları inceleyiniz.

private void Form1_Load(object sender, EventArgs e)
       {
           FileInfo Dosya = new FileInfo("C:\\Dosya\\Gencay.txt");
           listBox1.Items.Add("Dosya var mı? : " + Dosya.Exists);
           //Exists özelliği ile FileInfo nesnesine yolu verilen dosyanın var olup olmadığı kontrol edilir.Eğer varsa True,yoksa False dönecektir.
           listBox1.Items.Add("Oluşturulma tarihi : " + Dosya.CreationTime);
           //CreationTime özelliği ile FileInfo nesnesine yolu verilen dosyanın oluşturulma tarihini elde edebiliriz.
           listBox1.Items.Add("Son yazma tarihi : " + Dosya.LastWriteTime);
           //LastWriteTime özelliği ile FileInfo nesnesine yolu verilen dosyanın son yazma tarihini elde edebiliriz.
           listBox1.Items.Add("Dosyanın tam yolu : " + Dosya.FullName );
           //FullName özelliği ile FileInfo nesnesine yolu verilen dosyanın tam yoluna ulaşabiliriz.
           listBox1.Items.Add("Bulunduğu klasör : " + Dosya.DirectoryName);
           //DirectoryName özelliği ile FileInfo nesnesine yolu verilen dosyanın bulunduğu klasörü elde edebiliriz.
           listBox1.Items.Add("Dosya uzantısı : " + Dosya.Extension);
           //Extension özelliği ile FileInfo nesnesine yolu verilen dosyanın uzantısını öğrenebiliriz.
           listBox1.Items.Add("Dosya boyutu : " + Dosya.Length);
           //Length özelliği ile FileInfo nesnesine yolu verilen dosyanın boyutunu öğrenebiliriz.
       }

Yukardaki kodların ekran görüntüsü aşağıdaki gibidir.

File Sınıfı

Dosya oluşturma,kopyalama,taşıma ve silme gibi işlemleri gerçekleştirmek için File sınıfını kullanırız.File sınıfı static bir sınıftır.Bu sınıfı kullanabilmek için System.IO namespaceini projemize eklememiz gerekmektedir.Şimdi File sınıfının metodlarını inceleyelim.

Öncelikle File sınıfının metodlarına değinmeden, C dizininin aldında “Dosya” adında bir klasör açalım.
Exists Metodu
Dosya var mı, yok mu kontrol edilir.Eğer varsa True, yoksa False dönecektir.

MessageBox.Show(File.Exists("C:\\Dosya\\Deneme.txt").ToString());

Create Metodu
Create metoduyla verilen dosya yoluna, istediğimiz isim ve uzantıda dosya oluşturabiliriz.

File.Create("C:\\Dosya\\Deneme.txt");

Yukarıdaki kodu derlediğiniz zaman, C dizisindeki “Dosya” klasörünün içinde “Deneme.txt” dosyasının oluşturulduğunu göreceksiniz.

Delete Metodu
Delete metodu ile, dosya yolu verilen dosyamız silinebilir.

File.Delete("C:\\Dosya\\Deneme.txt");

Create metodu ile oluşturduğumuz Deneme.txt ismindeki dosyamızı, yukarıdaki kodu derledikten sonra silmiş oluyoruz.
Delete Metodu
Delete metodu ile, dosya yolu verilen dosyamız silinebilir.

File.Delete("C:\\Dosya\\Deneme.txt");

Create metodu ile oluşturduğumuz Deneme.txt ismindeki dosyamızı, yukarıdaki kodu derledikten sonra silmiş oluyoruz.

Şimdi ise C:\Dosya\ dizininde, “Klasör” adında bir klasör daha oluşturuyorum.
Move Metodu
Move metodu ile klasör taşıyabiliriz.
Move metodunun protitipi aşağıdaki gibidir.

File.Move("Taşınacak Dosya Yolu ve Dosya Adı","Taşınacak Klasör Yolu ve Taşındıktan Sonraki Dosya Adı");

Şimdi,C:\Dosya\ dizinine “Personel.txt” adında bir dosya oluşturalım.Sonra bu dosyayı, C:\Dosya\Klasör\ dizinine “Calisanlar.txt” adında taşıyalım.

File.Create("C:\\Dosya\\Personel.txt");

Personel.txt dosyamızı oluşturduk.Artık C:\Dosya\ dizininde “Personel.txt” adında dosyamızı görebiliyoruz.Şimdi bu dosyayı C:\Dosya\Klasör dizinine taşıyalım.

File.Move("C:\\Dosya\\Personel.txt","C:\\Dosya\\Klasör\\Calisanlar.txt");

Artık C:\Dosya\ dizinine girdiğimizde “Personel.txt” dosyasını göremiyoruz.C:\Dosya\Klasör\ dizininde ise “Calisanlar.txt” dosyasını görebilirsiniz.
Copy Metodu
Copy metodu, dosya kopyalayıp yapıştırmaya yarar.
Copy metodunun protitipi aşağıdaki gibidir.

File.Copy("Kopyalanacak Dosya", "Yapıştırılacak Dizin");

Yukarıda “Klasör” adındaki klasörümüzün içine taşınan “Calisanlar.txt” adındaki dosyamızı, C:\Dosya\ dizinine “Personel.txt” adında kopyalayıp yapıştıralım.

Yukarıdaki komutu derlediğimiz zaman, “Klasör” ismindeki klasörümüzde “Calisanlar.txt” dosyası dururken, “Dosya” ismindeki klasörümüzde “Personel.txt” dosyası mevcut olacaktır.

Bir Dosyanın İçindeki Yazıları Okuma
C:\Dosya\ dizinine “Yazi.txt” adında bir dosya oluşturup, içine “Gençay YILDIZ 1992” yazısını yazıyorum.
Şimdi bu yazıyı okuyalım.

string yazi = File.ReadAllText(@"C:\Dosya\Yazi.txt");
MessageBox.Show(yazi);

Kodu derleyip çalıştırdığımızda, mesaj kutusunda yazıyı aynen görebiliriz.

Gençay Yıldız ın tüm makalelerine bu linkten ulaşabilirsiniz. 

İlgili Makaleler

Bu yazıya 2 yorum yapılmış.

  • Teşekkürler -

    Değerli yorumunuz için teşekkür ederiz.

  • Teşekkürler -

    İşime yaradı

Yorum Gönder