SORU
12 EYLÜL 2011, PAZARTESİ


Bir Dize kullanarak C için Tüm dosyayı okumayı#

Bir metin okumak için en hızlı yolu, bir dize değişkeni dosya nedir?

Bireysel bayt okuma ve dize için bu dönüştürmek gibi çeşitli şekillerde olabilir anlıyorum. En az kodlama ile bir yöntem arıyordum.

Kullanıyorum .NET sürüm 3.5.

CEVAP
12 EYLÜL 2011, PAZARTESİ


C# file handling File.ReadAllLines vs StreamReader ReadLine kriter bir karşılaştırma

File Read Comparison

Sonuçları. StreamReader çok daha hızlı 10,000 ile büyük dosyalar için. çizgiler, ama daha küçük dosyalar için fark önemsİzdİr. Her zaman olduğu gibi, dosyaları farklı boyutlarda için plan ve Dosya kullanın.Sadece zaman ReadAllLines performans önemli değil.


StreamReader yaklaşım

File.ReadAllText yaklaşım başkaları tarafından belirtildiği gibi, aynı zamanda deneyebilirsinizdaha hızlı(Nicel performans etkisini test etmedim, ama daha hızlı File.ReadAllText (bkz . daha görünüyor ^strong>karşılaştırmaaşağıda)). Performans difference daha büyük dosyalar halinde görünür olacaktır.

string readContents;
using (StreamReader streamReader = new StreamReader(path, Encoding.UTF8))
{
     readContents = streamReader.ReadToEnd();
}


Dosya karşılaştırma.() Readxxx vs StreamReader.() Readxxx

ILSpy ı ile gösterge kod görüntülemeFile.ReadAllLines, File.ReadAllTexthakkında şunları bulduk.

  • File.ReadAllText- İçten StreamReader.ReadToEnd kullanır
  • File.ReadAllLines- Ayrıca StreamReader.ReadLine dahili okudum satırları ve dosya sonuna kadar döngü gibi tekrar List<string> oluşturma ayrıca havai kullanır.


Her iki yöntem de birkolaylık ek katmanStreamReader üzerine inşa. Bu yöntemi göstergesi vücut tarafından bellidir.

File.ReadAllText()uygulama İLSpy tarafından decompiled

public static string ReadAllText(string path)
{
    if (path == null)
    {
        throw new ArgumentNullException("path");
    }
    if (path.Length == 0)
    {
        throw new ArgumentException(Environment.GetResourceString("Argument_EmptyPath"));
    }
    return File.InternalReadAllText(path, Encoding.UTF8);
}   

private static string InternalReadAllText(string path, Encoding encoding)
{
    string result;
    using (StreamReader streamReader = new StreamReader(path, encoding))
    {
        result = streamReader.ReadToEnd();
    }
    return result;
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jose LviS el Bambino ( JLB )   LviSito

    Jose LviS el

    3 ŞUBAT 2008
  • Air_Fooj

    Air_Fooj

    24 NİSAN 2009
  • LiveForGodsKingdom

    LiveForGodsK

    6 NİSAN 2008