Reading Last Lines of a Large File in Go Every 10 Seconds
Reading the last few lines of a large file without loading it entirely into memory can be challenging. This article explores how to achieve this in Go by seeking to the end of the file and reading forward.
To start, you can determine the file's size using the Stat function. Given a file named MYFILE and a Seek position of start, use the ReadAt function to read the desired number of bytes from that position:
stat, statErr := file.Stat() if statErr != nil { panic(statErr) } start := stat.Size() - 62 _, err = file.ReadAt(buf, start) fmt.Printf("%s\n", buf)
This method allows you to read the specified number of bytes from the end of the file, reducing the need to load the entire file into memory.
To automate this process, you can use a time.Tick channel to read the last lines every 10 seconds:
c := time.Tick(10 * time.Second) for now := range c { readFile(MYFILE) }
In summary, by utilizing Stat and ReadAt, you can efficiently read the last lines of a large file every 10 seconds without overloading your memory.
以上是Go中如何有效率地每10秒讀取一個大檔案的最後幾行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!