Anasayfa / Yazılım / ASP.NET / StreamReader ve StreamWriter Sınıfları

StreamReader ve StreamWriter Sınıfları

StreamReader ve StreamWriter sınıfları kullanılarak karakter tabanlı kanal oluşturabiliriz. Bu sınıflarla Byte kanalları karakter tabanlıya dönüştürülür. Yazma işleminde StreamWriter, okuma işleminde StreamReader sınıfları kullanılır. Metin dosyaları için kullanılırlar.

Şimdi bir uygulama yaparak konuyu pekiştirelim. Senaryom şu şekilde olsun, web formumda bir adet textbox olsun. Kullanıcı bu tetxbox üzerinden veri girsin, bu verilerin kaydı bir buton aracılığı ile gerçekleşsin, her eklenen veri bir txt dosyasına eklensin. Eklendiğine dair label kontrolünde eklendi bilgisi verilsin. Sonra ayrı bir butonda veri okuma işlemi için kullanılsın, ayrı bir listboxda txt dosyasındaki verileri okusun.

Tasarımım aşağıdaki şekilde :

Kodlarım ise aşağıdaki şekilde :

Default2.aspx :

   <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>





    
    


    
Ürün Adı :
   
   
     
   
Stoktaki Ürünler :
     
     

Evet şimdi uygulamamızın kodlarına geçelim, öncelikle yapmam gereken şu, butona tıkladığımda veriyi bir txt dosyasına ekleyecek. Bu dosyamın adı urunler.txt olsun. Web formumda butonun click olayında aşağıdaki kodları yazıyorum. (System.IO namespace’i eklemeyi unutmayınız.)

    protected void btnKaydet_Click(object sender, EventArgs e)
    {
        //Dosya oluşturmak için FileStream kullanıyorum. FileAppend diyerekde ilk anda dosyam oluşturulduktan sonra
        //dosya içeriğine ekleme yapıyorum.
        FileStream fs = new FileStream(Server.MapPath("deneme.txt"), FileMode.Append, FileAccess.Write);
        StreamWriter sw = new StreamWriter(fs);
        //TextBox içeriğini dosyama yazıyorum
        sw.WriteLine(TextBox1.Text);
        //nesnelerimi kapatıyorum
        sw.Close();
        fs.Close();
        TextBox1.Text = "";
        lblMesaj.Text = "Kayıt Alındı";
    }

Şimdi veriyi okumayı da deneyelim, okuduğumuz verileri listboxa ekleyeceğiz. Bunun için verioku butonunda çift tıklıyorum ve bu butonun click eventinde aşağıdaki kodları yazıyorum :

protected void btnOku_Click(object sender, EventArgs e)
    {
        //her veri girdikten sonra tekrar okuma yapacağım için ilk anda temizliyorum.
        lbStokUrunler.Items.Clear();
        //Bu sefer dosyamı okuma işlemi yapacağım için filemode open diyorum, erişimim de sadece okuma yani read
        FileStream fs = new FileStream(Server.MapPath("deneme.txt"), FileMode.Open, FileAccess.Read);
        StreamReader sr = new StreamReader(fs);
        //dosyam içinde kaç satır bilgi olduğunu bilmediğim için burada while döngüsü ile dönmem gerekiyor
        while (sr.Peek() != -1)
        {
            //Dosyamdaki her satırı okuyorum ve listboxa alıyorum
            lbStokUrunler.Items.Add(sr.ReadLine());
        }
        //instance aldığım nesneleri kapatıyorum
        sr.Close();
        fs.Close();
    }

Uygulamayı aşağıdaki linkten indirebilirsiniz.

Bir cevap yazın

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