Makale Özeti

Bu makalede metin dosyaları üzerindeki işlemleri inceleyeceğiz.

Makale

Metin İşlemleri

Metin Dosyası İşlemleri

Dosya veya klasör oluşturma, bunlara bilgi girişi yapma ve bunlardan bilgi elde etme gibi girdi çıktı işlemlerini yapabilmek için System.IO isimuzayını kullanıyoruz.

Bir dosyadan veri okumak veya dosyaya veri yazmak için Stream sınıfını kullanırız. Stream(akış) ; bilgi akışını ifade eder. Stream nesnelerinin hepsi System.IO.Stream sınıfından türetilen FileStream, MemoryStream gibi sınıflardan oluşturulurlar.

FileInfo; ilgili dosya hakkında çeşitli bilgiler almamızı sağlayan bir sınıftır. FileInfoya dosyanın adresi, parametre olarak verilir. FileInfo nesnesinden türetilen nesnemizin Open metodu ile açılacak olan dosyanın hangi özelliklere sahip olacağını sınırlıyoruz. Open metodu, FileStream nesnesi dönderir. FileStream, Stream sınıfından türetilmiştir. FileStream nesnesi de vermiş olduğumuz adresteki dosya üzerinde işlem yapmamızı sağlar.

Belirtilen dosyadan okuma yapabilmek için StreamReader sınıfını kullanırız. StreamReader; bir akış tarafından taşınan bilgiyi okumak için kullanılır. Dosya sonuna gelene kadar ReadLine() metodu ile okuma işlemini gerçekleştiriyoruz.

Belirtilen dosyadan okuma yapabilmek için StreamReader sınıfını kullanırız. StreamReader; bir akış tarafından taşınan bilgiyi okumak için kullanılır. Dosya sonuna gelene kadar ReadLine() metodu ile okuma işlemini gerçekleştiriyoruz.

Belirtilen dosyaya yazma işlemi gerçekleştirmek için StreamWriter sınıfını kullanırız.

(WriteLine() metodu her satırın arkasından satır sonu karakteri eklerken, Write() metodu ise satır sonu karakteri eklemez. )

Bir örnekle devam edelim.

Form tasarımını aşağıdaki gibi yapalım.

Şekil-1: Form Tasarımı

Forma iki tane metin kutusu, iki tane komut düğmesi, ve OpenFileDialog kontrolü ile SaveFileDialog kontrolü yerleştirin.

Kontrollerin isimlendirmelerini aşağıdaki gibi yapın:

TextBox1.Name=txtDosyayaYazdir
TextBox2.Name=txtDosyadanOku
Button1.Name= btnYaz
Button2.Name=btnOku
OpenFileDialog1.Name=dlgOpen
SaveFileDialog1.Name=dlgSave

Imports System.IO 

Dosyaya okuma ve yazma işlemlerini yapabilmek için System.IO isimuzayını dahil ediyoruz.

txtDosyayaYazdir metin kutusuna herhangi bir yazı yazıp ‘Dosyaya Yazdır’ komut düğmesine bastığımızda aşağıdaki komut çalışacaktır.

    Private Sub btnYaz_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnYaz.Click

         Dim DosyaIsmi As String
        dlgSave.InitialDirectory = Application.ExecutablePath

        başlangıçta standart olarak uygulamanın çalıştığı klasör açılmasını sağlar.

        dlgSave.DefaultExt = "txt"

        kaydetmek için varsayılan uzantının txt olduğunu belirtiyoruz.

Filter metodu ile göstermesini istediğimiz dosyaların uzantılarını giriyoruz.

         dlgSave.Filter = "Metin Dosyaları(*txt)|txt"

Şekil -2 : Kaydetmek için kullanıcı arayüzü.

ShowDialog() metodu; dosyayı kaydetmek için standart kullanıcı arabirimi araçlarını sağlayan diyalog kutusunu ekrana getirir.

         dlgSave.ShowDialog()
         DosyaIsmi = dlgSave.FileName

        kullanıcının girmiş olduğu dosya ismi DosyaIsmi değişkenine atanıyor.

         Dim fs As FileStream = New FileStream(DosyaIsmi, FileMode.Create, FileAccess.Write)

        Bir akım tanımlıyoruz.

         Dim Yazdirma As StreamWriter = New StreamWriter(fs)
         Yazdirma.WriteLine(txtDosyayaYazdir.Text)
        Yazdirma.Close()
        fs.Close()

     End Sub 

Dosyaya kayıt ettikten sonra dönüp kayıt ettiğimiz yere baktığımız, kayıt ettiğimiz isimle dosyamızın orada olduğunu göreceğiz.

Şekil-3: Kayıt edilen dosyanın yeri.

Okumak için ‘Dosyadan Oku’ butonuna basıldığında aşağıdaki form çıkacaktır.

Şekil-4: Dosya açmak için sunulan kullanıcı arayüzü.

    Private Sub btnOku_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOku.Click

        Dim DosyaIsmi As String
        Dim satir As String
       dlgOpen.InitialDirectory = Application.ExecutablePath
        dlgOpen.DefaultExt = "txt"
        dlgOpen.Filter = "text dosyası(*.txt)|txt"
        dlgOpen.ShowDialog()
        DosyaIsmi = dlgOpen.FileName
        Dim fs As FileStream = New FileStream(DosyaIsmi, FileMode.Open)
        Dim Okuma As StreamReader = New StreamReader(fs)

Dosya sonu olup olmadığı kontrolünü Peek() methodunu çağırarak yaptık. Peek metodu sonraki karakterin ASCII kodunu dönderir. Eğer hiç karakter yoksa -1 değerini dönderir. 

        While Okuma.Peek <> -1
            satir = satir & Okuma.ReadLine
        End While

        txtDosyadanOku.Text = satir.ToString
        Okuma.Close()
        fs.Close()
    End Sub 
End Class

Okuma işlemi gerçekleştikten sonra txtDosyadanOku metin kutusunun içeriğine dosyanın içindeki bilgiler gelecektir.

Şekil-5: Kayıt edilen dosyanın okunması.


Streamleri kullaranak metin dosyası işlemleri yapmak oldukça kolay. StreamWriter ile dosyaya yazma işlemi yaparken, StreamReader ile dosyadan okuma işlemi gerçekleştiriyoruz. .net ile bize sunulan SaveFileDialog kontrolü kayıt etmek için, OpenFileDialog kontrolü ise kayıt ettiğimiz dosyayı açmak için kullanıcı arabirimi sunar.

 

 

Öznur KARAKUŞOĞLU
oznurkarakusoglu@hotmail.com