Heim >Backend-Entwicklung >Golang >Wie kann ich alle 10 Sekunden effizient die letzten Zeilen einer großen Datei in Go lesen?

Wie kann ich alle 10 Sekunden effizient die letzten Zeilen einer großen Datei in Go lesen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-14 16:56:02592Durchsuche

How to Efficiently Read the Last Lines of a Large File in Go Every 10 Seconds?

Lesen der letzten Zeilen einer großen Datei in Go alle 10 Sekunden

Lesen der letzten paar Zeilen einer großen Datei, ohne sie vollständig zu laden Das Gedächtnis kann eine Herausforderung sein. In diesem Artikel erfahren Sie, wie Sie dies in Go erreichen, indem Sie bis zum Ende der Datei suchen und vorwärts lesen.

Zunächst können Sie die Größe der Datei mithilfe der Stat-Funktion ermitteln. Wenn Sie eine Datei mit dem Namen MYFILE und eine Suchposition für den Anfang haben, verwenden Sie die ReadAt-Funktion, um die gewünschte Anzahl von Bytes von dieser Position zu lesen:

stat, statErr := file.Stat()
if statErr != nil {
    panic(statErr)
}
start := stat.Size() - 62
_, err = file.ReadAt(buf, start)
fmt.Printf("%s\n", buf)

Mit dieser Methode können Sie die angegebene Anzahl von Bytes vom Ende lesen der Datei, wodurch die Notwendigkeit reduziert wird, die gesamte Datei in den Speicher zu laden.

Um diesen Vorgang zu automatisieren, können Sie einen time.Tick-Kanal verwenden, um die letzten Zeilen alle 10 Sekunden zu lesen:

c := time.Tick(10 * time.Second)
for now := range c {
    readFile(MYFILE)
}

Zusammenfassend lässt sich sagen, dass Sie durch die Verwendung von Stat und ReadAt die letzten Zeilen einer großen Datei alle 10 Sekunden effizient lesen können, ohne Ihren Speicher zu überlasten.

Das obige ist der detaillierte Inhalt vonWie kann ich alle 10 Sekunden effizient die letzten Zeilen einer großen Datei in Go lesen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn