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
C# file handling File.ReadAllLines
vs StreamReader ReadLine
kriter bir karşılaştırma
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.ReadAllText
hakkında şunları bulduk.
File.ReadAllText
- İçtenStreamReader.ReadToEnd
kullanırFile.ReadAllLines
- AyrıcaStreamReader.ReadLine
dahili okudum satırları ve dosya sonuna kadar döngü gibi tekrarList<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;
}
't don dosyaları bulmak için grep...
Nasıl bir dize JavaScript kullanarak b...
Nasıl bir dize python kullanarak bir k...
Nasıl kullanarak/Catch olmadan bir diz...
Nasıl bir dize düzenli ifade kullanara...