So rufen Sie effizient die letzten 10 Zeilen aus umfangreichen Textdateien (> 10 GB) ab
Anzeige der letzten 10 Zeilen einer umfangreichen Datei Das Erstellen einer Textdatei kann eine Herausforderung sein, insbesondere wenn die Datei größer als 10 Gigabyte ist. Erwägen Sie für eine effiziente Lösung den folgenden Ansatz:
Durchlaufen Sie die Datei zunächst bis zum Ende. Gehen Sie als nächstes systematisch zurück und suchen Sie nach 10 aufeinanderfolgenden Zeilenumbrüchen. Sobald Sie es gefunden haben, lesen Sie bis zum Schluss weiter und achten Sie dabei auf unterschiedliche Zeichenkodierungen.
Behandeln Sie Szenarien, in denen die Datei weniger als 10 Zeilen enthält, indem Sie den Prozess entsprechend anpassen. Unten ist eine Implementierung in C#:
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 the case where the file has fewer than numberOfTokens lines fs.Seek(0, SeekOrigin.Begin); buffer = new byte[fs.Length]; fs.Read(buffer, 0, buffer.Length); return encoding.GetString(buffer); } }
Diese Methode passt sich dynamisch an die tatsächliche Anzahl der Token in der Datei an und ist somit für Dateien mit unterschiedlichen Zeilenzahlen wirksam.
Das obige ist der detaillierte Inhalt vonWie liest man die letzten 10 Zeilen einer großen Textdatei effizient?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!