Lesen Sie die C#Textdateimethode im Detail
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:
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(); } } } } }
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!