inicio mail me! sindicaci;ón

Dosya Okuma İşlemlerinde ReadAllLines, ReadAllText ve ReadAllBytes Metodlarını Kullanın

Bir dosyadaki tüm verileri okumak için File.ReadAllText, File.ReadAllLines, veya File.ReadAllBytes metodlarını kullanın.
ReadAllText metodu dosyadaki tüm veriyi string olarak, ReadAllLines metodu string array olarak, ReadAllBytes metodu ise byte array olarak okumaktadır ve b metodlar geleneksel okuma rutinine göre daha yüksek performans sunmaktadır. Bu metodlar sayesinde aynı zamanda sık sık unutulan ve sorunlara neden olan dosyaların okuma sonrasında kapatılması sorununu da ortadan kaldırmaktadır (tabi siz asla unutmazsınız :) ).

Kullanımı;
* dosyadaki tüm verileri string olarak okuyarak bir string değişkene atamak için
myVar = File.ReadAllText(filename);

* dosyadaki tüm verileri satır satır okuyarak bir string array’e aktarmak için
string[] myVar = File.ReadAllLines(filename);

* dosyadaki tüm verileri alarak bir byte array’e aktarmak için
byte[] myVar = File.ReadAllBytes(filename);

Örnek
Windows tabanlı bir uygulamada, disk üzerindeki bir dosyayı okuyarak içindeki verileri bir metin kutusuna aktarmak istediğimizi varsayalım.
Yazacağımız kod şöyle olacaktır; using

StreamReaderStringBuilder sb = new StringBuilder();
using (StreamReader sr = new StreamReader(filename))
{
while (sr.Peek() >= 0)
{
sb.AppendLine(sr.ReadLine());
}
}
textBox1.Text = sb.ToString();

Ancak bu kod, dosyanın içeriğini satır satır okuyacağı için büyük boyutlu dosyalarda işlem süresi oldukça uzayacaktır.

Bu kodu şu şekilde değiştirerek aynı işlemi çok daha hızlı bir şekilde gerçekleştirmemiz mümkündür;

textBox1.Text = File.ReadAllText(filename);

Bu kodun arkaplanına bakacak olursak; File.ReadAllText metodu System.IO.File içinde yer alan static bir metoddur. Bizim kullandığımız tek parametreli overload, kendi içinde ReadAllText(filename, Encoding.UTF8) şeklinde bir çağrı yapmaktadır.

Encoding parametresi alan overload’ın kodları ise şu şekildedir;

public static string ReadAllText(string path, Encoding encoding)
{
using (StreamReader reader = new StreamReader(path, encoding))
{
return reader.ReadToEnd();
}
}

Leave a Comment