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ı.
Not Defterinde örnek bir metin dosyası oluşturun. Şu adımları izleyin:
- Merhaba dünya metnini Not Defterine yapıştırın.
- Dosyayı Sample.txt olarak kaydedin.
Microsoft Visual Studio'yu başlatın.
Dosya menüsünde, Yeni'nin üzerine gelin ve Proje'yi seçin.
Proje Türleri altında Visual C# Projeleri'ni seçin ve ardından Şablonlar'ın altında Konsol Uygulaması'nı seçin.
Class1.cs dosyasının başına aşağıdaki kodu ekleyin:
using System.IO;
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."); }
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.
Visual Studio'yu başlatın.
Dosya menüsünde, Yeni'nin üzerine gelin ve Proje'yi seçin.
Proje Türleri altında Visual C# Projeleri'ni seçin ve ardından Şablonlar'ın altında Konsol Uygulaması'nı seçin.
Class1.cs dosyasının başına aşağıdaki kodu ekleyin:
using System.IO;
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."); }
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.
Visual Studio'yu başlatın.
Dosya menüsünde, Yeni'nin üzerine gelin ve Proje'ye tıklayın.
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.
Class1.cs dosyasının başına aşağıdaki kodu ekleyin:
using System.IO; using System.Text;
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."); }
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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin