Merhaba,
Bu yazı dizimizde temel giriş çıkış işlemlerinin dördüncü kısımını inceleyeceğiz ve bu yazı bunlardan beşinci ve altıncı olan StreamReader ve StreamWriter sınıfları ile ilgili temel bilgiler ve detayları içeriyor olacak.
Yazı dizimizin girişinde diğerlerinde de olduğu gibi öncelikle IO sınıfı hakkında bilgimizi ekleyelim:
Programlama dilleri içerisinde yer alan önemli yapılardan biri olan I\O sistemi bilgisayarların çeşitli kaynaklarına erişmek için kullanılacak yollar anlamına gelir. Dosya kaydetme, ekrana yada yazıcıya bilgi yazdırma, klavyeden bilgi girişleri birer I\O işlemleridir.
-C# dilinde ise I\O sistemi ile ilgili tüm sınıflar “System.IO” isim alanı altında bulunmaktadır.
-C# dilinde de I\O sistemi akışlar(stream) üzerine kuruludur. Akışlar bir girdi ya da çıktı sistemi üzerinden byte düzeyinde bilgiyi okuya sanal birimlerdir.
-Stream sınıfı akışlar için gerekli temel metot ve özellikleri barındırır.
StreamReader Sınıfı
StreamReader sınıfı benzer bir tür olan FileStream sınıfının aksine baytlar ile değil metinler ile ilgilenir. Bir StreamReader nesnesinin oluşturulma yöntemleri aşağıdaki gibidir:
string yol=@"C:\deneme\test.txt"; FileStream fs= new FileStream(dosya, FileMode.Open); StreamReader sr1= new StreamReader(fs); StreamReader sr2 = new StreamReader(dosya); FileInfo fi =new FileInfo(dosya); StreamReader sr3= new StreamReader(fi);
Diğer sınıflarda olduğu gibi StreamReader nesneleriyle işimiz bittiğinde Close() metodunu kullanarak kaynakların iade edilmesi tavsiye edilir.
Stream Reader ile Kullanılan Önemli Metotlar
-string ReadToEnd()
Akıştaki verilerin tamamını string olarak tutar. Okuma işlemi aktif konumdan başlayacaktır. Eğer okuma yapılamazsa boşluk tutar.
-int Read()
Akıştan bir karakterlik bilgi okunur ve int’e dönüştürülür. İşle başarısız olursa -1 ile geri döner.
-int Read(char[] dizi, int indeks, int adet)
Akıştan “adet” değişkeni kadar karakteri dizi[indeks] eleanından itibaren diziye yerleştirir. Yerleştirilen eleman sayısını döndürür.
-int Peek()
Akıştan bir karakterlik bilgi okunur ve bu karakterin int’e dönüşmüş hali ile geri dönülür. İşlem başarısız olursa -1 ile geri döner. En önemli nokta ise konum göstericisinin yerinin değiştirilmemesidir.
StreamWriter Sınıfı
StreamReader sınıfı ile dosyalardan text tabanlı verileri okuyabiliyorduk. StreamWriter sınıfı ise bunun tam aksini yapar. Yani StreamWriter sınıfı ile dosyalara text tabanlı veriler yazılır. Bir StreamWriter nesnesi şu yollar ile oluşturulabilir:
string yol=@"C:\deneme\test.txt"; FileStream fs= new FileStream(dosya, FileMode.Open); StreamWriter sw1= new StreamWriter(fs); StreamWriter sw2= new StreamWriter(dosya); FileInfo fi =new FileInfo(dosya); StreamWriter sw3= new StreamWriter(fi);
StreanReader sınıfında olduğu gibi StreamWriter sınıfında da Close() metodu ile StreamWriter nesnesine ilişkin kaynaklar iade edilir. StreamWriter sınıfının en önemli metotları aşağıdaki gibidir:
-void Write(string str)
Bu metotla akışa “str” değişkenindeki yazı eklenir. Yazının sonuna herhangi bir sonlandırıcı karakter konmaz. Bu metot ile diğer bütün veri türlerinden veri eklemek mümkündür.
-void WriteLine(string str)
Write metodu ile aynı işi yapar. Tek fark eklenen yazının sonuna kendisi “\n” stringi koyar. Ayrıca Write metodundan farklı olarak WriteLine() metodunu parametresiz de kullanabiliriz. Bu durumda sadece “\n” eklenir.
void Flush()
Tampondaki bilgilerin boşaltılmasını ve dosyanın güncellenmesini sağlar.
Ayrıca StreamWriter sınıfının NewLine özelliği ile satır ayıracı olan karakterleri belirleyebiliriz. Varsayıla olarak bu karakter “\n” ve “\r” dir.
Bu yazımızda da StreamReader ve StreamWriter sınıflarından, detaylarından ve örneklerde bahsettik. Aklınıza takılan veya eksik gördüğünüz kısımları yorumlar aracılığı ile bana iletebilirsiniz.
Bir sonraki yazıda görüşmek üzere..
Teşekkürler!