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
Freigeben: 2024-11-14 16:56:02
Original
574 Leute haben es durchsucht

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)
Nach dem Login kopieren

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)
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage