Die letzten 10 Zeilen einer riesigen Textdatei (über 10 GB) abrufen: Ein effizienter C#-Ansatz
Beim Umgang mit riesigen Textdateien von mehr als 10 GB, das Extrahieren der letzten Zeilen kann eine Leistungsherausforderung darstellen. So erreichen Sie dies effektiv mit C#:
Code-Implementierung:
Mit diesem allgemeinen Ansatz können Sie die Anzahl der zu extrahierenden Token (numberOfTokens) und den Dateipfad angeben (Pfad), die Kodierung (Kodierung) und das Token-Trennzeichen (tokenSeparator):
public static string ReadEndTokens(string path, Int64 numberOfTokens, Encoding encoding, string tokenSeparator) { int sizeOfChar = encoding.GetByteCount("\n"); byte[] buffer = encoding.GetBytes(tokenSeparator); using (FileStream fs = new FileStream(path, FileMode.Open)) { Int64 tokenCount = 0; Int64 endPosition = fs.Length / sizeOfChar; for (Int64 position = sizeOfChar; position < endPosition; position += sizeOfChar) { fs.Seek(-position, SeekOrigin.End); fs.Read(buffer, 0, buffer.Length); if (encoding.GetString(buffer) == tokenSeparator) { tokenCount++; if (tokenCount == numberOfTokens) { byte[] returnBuffer = new byte[fs.Length - fs.Position]; fs.Read(returnBuffer, 0, returnBuffer.Length); return encoding.GetString(returnBuffer); } } } // handle case where number of tokens in file is less than numberOfTokens fs.Seek(0, SeekOrigin.Begin); buffer = new byte[fs.Length]; fs.Read(buffer, 0, buffer.Length); return encoding.GetString(buffer); } }
So funktioniert es:
Durch die Nutzung dieses Ansatzes können Sie die letzten Zeilen umfangreicher Textdateien effizient extrahieren und so die Herausforderungen meistern, die sich aus ihnen ergeben Größe.
Das obige ist der detaillierte Inhalt vonWie kann ich die letzten 10 Zeilen effizient aus einer 10-GB-Textdatei in C# extrahieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!