Lesen Sie die C#Textdateimethode im Detail
Im Programmdesign muss die Textdatei manchmal rückwärts gelesen werden. Dies kann von Iteratoren implementiert werden, wodurch sequentielle Verarbeitungsdaten ermöglicht werden können, ohne die gesamte Datei in den Speicher zu laden, um die Effizienz zu verbessern.
Beim Lesen der Textdatei muss die Codierungsmethode der Datei berücksichtigt werden. Wenn bei der Datei beispielsweise die UTF-8-Codierung verwendet wird, müssen Sie die Startposition jedes Unicode-Zeichens korrekt identifizieren und eine ungültige UTF-8-Sequenz verarbeiten.
Das folgende C# -Codefragment zeigt, wie Sie mit dem Iterator die Textdatei lesen:
<code class="language-csharp">using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices; public static class ReverseFileStreamReader { public static IEnumerable<string> ReadFileLinesReverse(string filePath) { using (var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { long fileLength = fileStream.Length; byte[] buffer = new byte[1024]; for (long position = fileLength - buffer.Length; position >= 0; position -= buffer.Length) { fileStream.Seek(position, SeekOrigin.Begin); int bytesRead = fileStream.Read(buffer, 0, buffer.Length); var lines = GetLinesFromBuffer(buffer, bytesRead); foreach (var line in lines) { yield return line; } } } } private static IEnumerable<string> GetLinesFromBuffer(byte[] buffer, int bytesRead) { return new string(GetCharactersFromBuffer(buffer, bytesRead)) .Split('\n') .Reverse(); } private static IEnumerable<char> GetCharactersFromBuffer(byte[] buffer, int bytesRead) { using (var memoryStream = new MemoryStream(buffer, 0, bytesRead)) { using (var streamReader = new StreamReader(memoryStream, Encoding.UTF8)) { while (!streamReader.EndOfStream) { yield return (char)streamReader.Read(); } } } } }</code>
Das obige ist der detaillierte Inhalt vonWie kann ich mit C#eine Textdatei in umgekehrter Reihenfolge effizient lesen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!