Heim >Backend-Entwicklung >C++ >„File.ReadLines()' vs. „File.ReadAllLines()': Welches eignet sich am besten zum Lesen großer Textdateien in C#?

„File.ReadLines()' vs. „File.ReadAllLines()': Welches eignet sich am besten zum Lesen großer Textdateien in C#?

Susan Sarandon
Susan SarandonOriginal
2025-01-07 21:49:41901Durchsuche

Lesen großer Textdateien in C#: Leistungsvergleich von File.ReadLines() und File.ReadAllLines()

`File.ReadLines()` vs. `File.ReadAllLines()`: Which is Best for Reading Large Text Files in C#?

File.ReadLines() und File.ReadAllLines() sind beide Methoden in C# zum Lesen von Textdateien, ihre Leistung unterscheidet sich jedoch erheblich.

File.ReadAllLines()

File.ReadAllLines() liest die gesamte Datei auf einmal in den Speicher und gibt ein String-Array zurück. Diese Methode ist für kleine Dateien effizient, weist jedoch bei großen Dateien Probleme auf. Mit zunehmender Dateigröße erhöht sich die Zeit, die zum Lesen und Verarbeiten der gesamten Datei erforderlich ist, erheblich. Darüber hinaus verbraucht File.ReadAllLines() viel Speicher, insbesondere beim Arbeiten mit Gigabyte-großen Dateien.

File.ReadLines()

File.ReadLines() löst die Einschränkungen von File.ReadAllLines() durch verzögertes Laden. Anstatt die gesamte Datei auf einmal in den Speicher einzulesen, wird ein IEnumerable<string> zurückgegeben, mit dem Sie nach Bedarf jede Zeile der Datei durchlaufen können. Dieser Ansatz reduziert den Speicherbedarf und verbessert die Leistung bei der Verarbeitung großer Dateien.

Leistungsvergleich

Benchmarks zeigen, dass File.ReadLines() bei großen Dateien eine bessere Leistung erbringt als File.ReadAllLines(). Dieser Unterschied wird mit zunehmender Dateigröße deutlicher. Beispielsweise kann das Lesen einer 100-MB-Datei mit File.ReadAllLines() mehrere Sekunden dauern, während File.ReadLines() die Aufgabe in weniger als einer Sekunde erledigen kann.

Beispielverwendung

Verwenden Sie File.ReadLines(), um Dateien zu lesen:

<code class="language-csharp">using System.IO;

string path = "C:\mytxt.txt";

foreach (var line in File.ReadLines(path))
{
    // 处理每一行
}</code>

Verwenden Sie File.ReadAllLines(), um Dateien zu lesen:

<code class="language-csharp">using System.IO;

string path = "C:\mytxt.txt";

string[] lines = File.ReadAllLines(path);

// 处理所有行</code>

Fazit

Bei großen Textdateien bietet File.ReadLines() erhebliche Leistungsvorteile gegenüber File.ReadAllLines(). Durch verzögertes Laden File.ReadLines() wird der Speicherverbrauch reduziert und die Verarbeitungsgeschwindigkeit erhöht, ohne dass die Effizienz darunter leidet.

Das obige ist der detaillierte Inhalt von„File.ReadLines()' vs. „File.ReadAllLines()': Welches eignet sich am besten zum Lesen großer Textdateien in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn