的一种方法是使用bufio
pkg。这方面的一个例子是:
fd, err := os.Open("your_file.csv")
if err != nil { //error handler
log.Println(err)
return
}
reader := bufio.NewReader(fd) // creates a new reader
_, err = reader.Discard(64) // discard the following 64 bytes
if err != nil { // error handler
log.Println(err)
return
}
// use isPrefix if is needed, this example doesn't use it
// read line until a new line is found
line, _, err := reader.ReadLine()
if err != nil { // error handler
log.Println(err)
return
}
fmt.Println(string(line))
另一种方法来读取行了,你可以使用fd.Seek(64,0)
跳转到一个特定字节像
_, err = fd.Seek(64, 0) // Set the current position for the fd
if err != nil { // error handler
log.Println(err)
return
}
而且以后使用阅读器阅读该行。
reader := bufio.NewReader(fd)
line, _, err := reader.ReadLine()
if err != nil {
log.Println(err)
return
}
fmt.Println(string(line))
我不得不退一步文件即时通讯目前在读,所以我不能随便丢弃接下来的n个字节。有时我必须跳回到文件的顶部。你可以放一个负数放弃吗? –
不,但是如果你需要的话,你可以使用'file.seek()'并创建另一个'bufio.Reader'。 – Motakjuq
是的..我试图避免这一点..但我想这是唯一的选择。谢谢! –