C#Iterator -Implementierungstextdatei Reverse Read
Bei der Verarbeitung großer Textdateien (insbesondere mehr als Hunderttausende von Zeilen) kann der Speicherverbrauch ein Engpass werden. Der Iterator bietet eine effiziente Speicherverwaltungsmethode, mit der die Daten durch inkrementelles Lesen liest, um zu vermeiden, dass die gesamte Datei in den Speicher geladen wird. Aufgrund der Existenz verschiedener Codierungsschemata ist es jedoch schwieriger, Textdateien zu lesen.
Leider hat das .NET -Framework nicht die Funktion der erstellten Reverse -Lese -Textdatei bereitgestellt. Um diese Funktion zu erreichen, muss die benutzerdefinierte Verarbeitung gemäß dem verwendeten Codierungsschema angepasst werden.
benutzerdefinierte Lösung
Um dieses Limit zu lösen, können wir unsere eigenen benutzerdefinierten Lösungen implementieren. Der folgende Code zeigt einen reversen Textdateileser, iterierte Dateien und in umgekehrter Reihenfolge generiert:
Implementieren Sie die Details
<code class="language-csharp">public sealed class ReverseLineReader : IEnumerable<string> { public ReverseLineReader(Func<Stream> streamSource, Encoding encoding) { } public IEnumerator<string> GetEnumerator() { } }</code>
StreamFactory:
Der Konstruktor akzeptiert eine
-Kommission, die einen Stream zum Lesen bereitstellt. Auf diese Weise kann diese Klasse gleichzeitig für Dateien und gleichzeitig fließen.ReverseLineReader
Zeichendetektor: streamSource
Für die langkodierende (UTF-8 und Unicode) analysiert der Leser den Byte-Modus, um die Ausgangsposition jedes Zeichens zu identifizieren. Das obige ist der detaillierte Inhalt vonWie kann ich eine große Textdatei mit C# -Iteratoren effizient in umgekehrt lesen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!