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

  • Absolute Zero(Programming Tutorials)

    Absolute Zer

    22 Kasım 2012
  • SaraBeautyCorner - Nails and Nail Art Designs, DIY, Fashion & Makeup Tutorial

    SaraBeautyCo

    7 EKİM 2012
  • The Exploiteers

    The Exploite

    4 Ocak 2011