Metin dosyasından okuma ve dosyaya yazma için Visual C# kullanma

Bu makale, Visual C# kullanarak metin dosyasını okumanıza ve dosyaya yazmanıza yardımcı olur.

Özgün ürün sürümü: Visual Studio
Orijinal KB numarası: 816149

Özet

Bu makalenin Metin dosyasını okuma bölümünde, metin dosyasını okumak için StreamReader sınıfının nasıl kullanıldığı açıklanmıştır. Metin dosyası yazma (örnek 1) ve Metin dosyası yazma (örnek 2) bölümlerinde, dosyaya metin yazmak için StreamWriter sınıfının nasıl kullanılacağı açıklanmaktadır.

Metin dosyası okuma

Aşağıdaki kod, metin dosyasını açmak, okumak ve kapatmak için StreamReader sınıfını kullanır. Dosyayı otomatik olarak açmak için bir metin dosyasının yolunu StreamReader oluşturucusundan geçirebilirsiniz. ReadLine yöntemi, her metin satırını okur ve okudukça dosya işaretçisini sonraki satıra arttırır. ReadLine yöntemi dosyanın sonuna ulaştığında boş bir başvuru döndürür. Daha fazla bilgi için bkz. StreamReader Sınıfı.

  1. Not Defterinde örnek bir metin dosyası oluşturun. Şu adımları izleyin:

    1. Merhaba dünya metnini Not Defterine yapıştırın.
    2. Dosyayı Sample.txt olarak kaydedin.
  2. Microsoft Visual Studio'yu başlatın.

  3. Dosya menüsünde, Yeni'nin üzerine gelin ve Proje'yi seçin.

  4. Proje Türleri altında Visual C# Projeleri'ni seçin ve ardından Şablonlar'ın altında Konsol Uygulaması'nı seçin.

  5. Class1.cs dosyasının başına aşağıdaki kodu ekleyin:

    using System.IO;
    
  6. Main yöntemine aşağıdaki kodu ekleyin:

    String line;
    try
    {
        //Pass the file path and file name to the StreamReader constructor
        StreamReader sr = new StreamReader("C:\\Sample.txt");
        //Read the first line of text
        line = sr.ReadLine();
        //Continue to read until you reach end of file
        while (line != null)
        {
            //write the line to console window
            Console.WriteLine(line);
            //Read the next line
            line = sr.ReadLine();
        }
        //close the file
        sr.Close();
        Console.ReadLine();
    }
    catch(Exception e)
    {
        Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
        Console.WriteLine("Executing finally block.");
    }
    
  7. Derlemek ve uygulamayı çalıştırmak için Hata Ayıklama menüsünde Başlat'ı seçin. Konsol penceresini kapatmak için ENTER tuşuna basın. Konsol penceresinde, Sample.txt dosyasının içeriği görüntülenir:

    Hello world
    

Metin dosyası yazma (örnek 1)

Aşağıdaki kod, metin dosyasını açmak, yazmak ve kapatmak için StreamWriter sınıfını kullanır. StreamReader sınıfına benzer şekilde, dosyanın otomatik olarak açılması için metin dosyasının yolunu StreamWriter oluşturucusundan geçirebilirsiniz. WriteLine yöntemi, metin dosyasına tam bir metin satırı yazar.

  1. Visual Studio'yu başlatın.

  2. Dosya menüsünde, Yeni'nin üzerine gelin ve Proje'yi seçin.

  3. Proje Türleri altında Visual C# Projeleri'ni seçin ve ardından Şablonlar'ın altında Konsol Uygulaması'nı seçin.

  4. Class1.cs dosyasının başına aşağıdaki kodu ekleyin:

    using System.IO;
    
  5. Main yöntemine aşağıdaki kodu ekleyin:

    try
    {
        //Pass the filepath and filename to the StreamWriter Constructor
        StreamWriter sw = new StreamWriter("C:\\Test.txt");
        //Write a line of text
        sw.WriteLine("Hello World!!");
        //Write a second line of text
        sw.WriteLine("From the StreamWriter class");
        //Close the file
        sw.Close();
    }
    catch(Exception e)
    {
        Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
        Console.WriteLine("Executing finally block.");
    }
    
  6. Derlemek ve uygulamayı çalıştırmak için Hata Ayıklama menüsünde Başlat'ı seçin. Bu kod, C sürücüsünde Test.txt adlı bir dosya oluşturur. Test.txt dosyasını Not defteri gibi bir metin düzenleyicisinde açın. Test.txt iki metin satırı içerir:

    Hello World!!
    From the StreamWriter class
    

Metin dosyası yazma (örnek 2)

Aşağıdaki kod, metin dosyasını açmak, yazmak ve kapatmak için StreamWriter sınıfını kullanır. Önceki örnekten farklı olarak, bu kod oluşturucuya iki ek parametre geçirir. İlk parametre, dosya yolu ve dosyanın adıdır. İkinci parametre, true, dosyanın ekleme modunda açıldığını belirtir. İkinci parametre için false'yı belirtirseniz, kodu her çalıştırdığınızda dosyanın içeriğinin üzerine yazılır. Üçüncü parametre Unicode'i belirtir, böylelikle StreamWriter dosyayı Unicode biçiminde kodlar. Üçüncü parametre için aşağıdaki kodlama yöntemlerini de belirtebilirsiniz:

  • ASC11
  • Unicode
  • UTF7
  • UTF8

Write yöntemi WriteLine yöntemine benzer, sadece Write yöntemi bir satır başı veya satır besleme (CR/LF) karakter bileşimini otomatik olarak eklemez. Bir seferde tek bir karakter yazmak istediğiniz zaman yararlı olur.

  1. Visual Studio'yu başlatın.

  2. Dosya menüsünde, Yeni'nin üzerine gelin ve Proje'ye tıklayın.

  3. Proje Türleri altında Visual C# Projeleri'ne tıklayın ve ardından Şablonlar altında Konsol Uygulaması seçeneğine tıklayın.

  4. Class1.cs dosyasının başına aşağıdaki kodu ekleyin:

    using System.IO;
    using System.Text;
    
  5. Main yöntemine aşağıdaki kodu ekleyin:

    Int64 x;
    try
    {
        //Open the File
        StreamWriter sw = new StreamWriter("C:\\Test1.txt", true, Encoding.ASCII);
    
        //Write out the numbers 1 to 10 on the same line.
        for(x=0; x < 10; x++)
        {
        sw.Write(x);
        }
    
        //close the file
        sw.Close();
    }
    catch(Exception e)
    {
        Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
        Console.WriteLine("Executing finally block.");
    }
    
  6. Derlemek ve uygulamayı çalıştırmak için Hata Ayıklama menüsünde Başlat'ı seçin. Bu kod, C sürücüsünde Test1.txt adlı bir dosya oluşturur. Test1.txt dosyasını Not defteri gibi bir metin düzenleyicisinde açın. Test1.txt tek bir metin satırı içerir: 0123456789.

Metin dosyasının nasıl okunacağına ilişkin tam kod listesi

//Read a Text File
using System;
using System.IO;
namespace readwriteapp
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            String line;
            try
            {
                //Pass the file path and file name to the StreamReader constructor
                StreamReader sr = new StreamReader("C:\\Sample.txt");
                //Read the first line of text
                line = sr.ReadLine();
                //Continue to read until you reach end of file
                while (line != null)
                {
                    //write the line to console window
                    Console.WriteLine(line);
                    //Read the next line
                    line = sr.ReadLine();
                }
                //close the file
                sr.Close();
                Console.ReadLine();
            }
            catch(Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
            finally
            {
                Console.WriteLine("Executing finally block.");
            }
        }
    }
}

Metin dosyası yazma için tam kod listesi (sürüm 1)

//Write a text file - Version-1
using System;
using System.IO;
namespace readwriteapp
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            try
            {
                //Pass the filepath and filename to the StreamWriter Constructor
                StreamWriter sw = new StreamWriter("C:\\Test.txt");
                //Write a line of text
                sw.WriteLine("Hello World!!");
                //Write a second line of text
                sw.WriteLine("From the StreamWriter class");
                //Close the file
                sw.Close();
            }
            catch(Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
            finally
            {
                Console.WriteLine("Executing finally block.");
            }
        }
    }
}

Metin dosyası yazma için tam kod listesi (sürüm 2)

//Write a text file - Version 2
using System;
using System.IO;
using System.Text;
namespace readwriteapp
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            Int64 x;
            try
            {
                //Open the File
                StreamWriter sw = new StreamWriter("C:\\Test1.txt", true, Encoding.ASCII);
                //Writeout the numbers 1 to 10 on the same line.
                for(x=0; x < 10; x++)
                {
                    sw.Write(x);
                }
                //close the file
                sw.Close();
            }
            catch(Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
            finally
            {
                Console.WriteLine("Executing finally block.");
            }
        }
    }
}

Sorun giderme

Tüm dosya düzenlemeleri için, hataları ve özel durumları işlemek için kodu bir try-catch-finally bloğu içine sığdırmak bir iyi programlama uygulamasıdır. Özel olarak, dosyanın süresiz olarak kilitlenmemesi için son blokta dosyanın tutamaçlarını serbest bırakmak iyi olabilir. Bazı olası hatalar arasında var olmayan bir dosya veya zaten kullanımda olan bir dosya yer alır.