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!