go - 如何读取文件的特定行数?
问题描述
我需要一次读取文件的特定行(例如,一次10行),下次读取文件时从上次读取位置的下一行(11)读取,并继续读取10行。
解决方案
这是我写的函数,似乎有效
func ReadLine(inputFile io.ReadSeeker, startPos int64, lineNum int) (slice []string, lastPos int64, err error) {
r := bufio.NewReader(inputFile)
var line string
inputFile.Seek(startPos, os.SEEK_SET)
lastPos = startPos
for i := 0; i < lineNum; i++ {
line, err = r.ReadString('\n')
if err != nil {
break
}
lastPos += int64(len(line))
slice = append(slice, line)
}
return
}