C#

C# Dosya Okuma

Merhabalar, C# derslerimize kaldığımız yerden devam ediyoruz. Bu dersimizde dosyadan veri okuma işlemlerini anlatacağım. Hazırsak başlayalım !

Öncelikle dosya.txt isminde masaüstünde bir tane metin belgesi oluşturalım, tüm işlemleri bu dosya üzerinden yürüteceğiz. Dosyamızın yolu ise c:/users/kullanici/desktop/dosya.txt olsun ve bu yolu da bir değişkene atayalım. Yani

string dosya = c:/users/kullanici/desktop/dosya.txt

Dosyadan veri okumak için iki yolumuz var; birincisi System.IO kütüphanesi altında bulunan File classının static tipteki ReadAllLines() metodu. Bu metoda dosya yolunu parametre olarak göndermeniz gerek ve geriye string dizisi döndürüyor, yani metin belgesindeki her satırı dizinin bir elemanı haline getiriyor. Buna bir örnek verelim;

string[] dizi = File.ReadAllLines(dosya);

Veri okumak için iki yolumuz var dedik ve birincisini anlattık, şimdi gelelim ikinci yola. Bunun için de hem dosyaya yazma, hemde dosya veri eklemede olduğu gibi Stream kullanacağız. Tabi dosya işlemi yaptığımız için kullanacağımız yapı FileStream olacaktır. FileStream static olmayan bir yapıda, yani kullanabilmek için yeni bir nesnesini türetmemiz gerek. FileStream parametre olarak okunacak dosyanın yolu, işlem tipi ve dosyayı açma türü olmak üzere 3 parametre alıyor. Şimdi hadi yeni bir FileStream nesnesi oluşturalım.

FileStream fs = new FileStream(dosya, FileMode.Open, FileAccess.Read);

Burada belirttiğimiz FileMode.Open parametresi ile dosyanın açılacağını ve FileAccess.Read parametresi ile de dosyanın okunacağını belirttik. Biz şimdi dosyayı açtık ama henüz dosyayı okumaya başlamadık. Dosyadan veri okumak için ise yine static olmayan ve yenir bir nesnesini türetmemiz gereken StreamReader sınıfını kullanacağız. StreamReader’da parametre olarak FileStream nesnesi istiyor ve biz zaten onu oluşturmuştuk, oluşturduğumuz nesneyi hemen gönderebiliriz. Hadi şimdi yeni bir StreamReader nesnesi oluşturalım;

StreamReader reader = new StreamReader(fs);

Eveett okuyucumuz da hazır, artık dosyayı okumaya başlayabiliriz. Okuma yapmak için StreamReader sınıfının ReadLine() metodunu kullanacağız. ReadLine() fonksiyonu tek bir satır okuyacağı için ve biz dosyanın hepsini okumak istediğimiz için satır satır okuma yapmamız gerek ve bunu da tabiki döngü ile yapacağız, döngü olarakta while döngüsü kullanacağız. Çünkü while döngüsü ile aynı zamanda kontrol de yapabiliyoruz ve buradaki kontrolümüz dosyanın sonuna gelip gelmediğimiz. Eğer dosyanın sonuna gelirsek bize boş yani null yanıt gelecek ve while içinde de bunu kontrol edeceğiz. Okunan her satırı da bir değişkene atıp, o değişkenin null olup olmadığını kontrol etmemiz yeterli. Yani şöyle;

string satir = reader.ReadLine();
while(satir != null)
{
    Console.WriteLine(satir);
    satir = reader.ReadLine();
}

Bu yazdığımız kodda az önce anlattığımız herşeyi yaptık. Yani önce bir satır okuyup onu bir değişkene attık ve while ile o değişkenin null olup olmadığını kontrol ederek her seferinde bir satır okuyup yine aynı değişkene attık. Tabi okunan her satırı konsol ekranına yazdık ama siz istediğiniz işlemi yapabilirsiniz elbette. While döngüsünden çıkıldığında dosyanın sonuna gelmiş oluyoruz ve okuma işlemi tamamlanmış oluyor.

Dosya okuma işlemini tamamladık fakat hem dosyayı açtığımız FileStream, hemde okuma işlemini yaptığımız StreamReader nesneleri bellekte açık bekliyor ve okuma yaptığımız dosyayı ele geçirmiş durumdalar, bu durumda başka bi işlem o dosyayı okuyamaz çünkü bir dosyayı aynı anda bir işlem okuyabilir yada yazabilir. O yüzden açık bulunan bu iki nesneyi kapatmamız ve dosyayı serbest bırakmamız gerek. Bunun içinde

reader.Close();
fs.Close();

kodlarını kullanmamız gerek. Dosyayı da kapattığımıza göre tüm işlemler tamamlanmış demektir. Yazdığımız tüm kodları aşağıya bırakayım da daha rahat görün 🙂

FileStream fs = new FileStream(dosya, FileMode.Open, FileAccess.Read);
StreamReader reader = new StreamReader(fs);
string satir = reader.ReadLine();
while(satir != null)
{
    Console.WriteLine(satir);
    satir = reader.ReadLine();
}
reader.Close();
fs.Close();

Evett bi dersimizin daha sonuna geldik, diğer C# ile dosya işlemleri derslerimize ulaşmak için buraya, Tüm C# derslerimize ulaşmak için ise buraya tıklayabilirsiniz. Herkese hayırlı günler.

Skorumuz:
Oy Vermek İçin Tıklayın
[Toplam: 1 Ortalama: 3]

Bir cevap yazın

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

Başa dön tuşu