在 Go 中,使用 os 将数据写入文件时.File,写入后文件指针移至文件末尾。随后,当尝试从同一文件指针读取数据时,会立即遇到 io.EOF(文件结束)错误,因为文件指针仍然位于文件末尾。
要在写入后成功从同一文件指针读取数据,必须使用 Seek 方法将文件指针重置到文件开头。下面是修改示例代码的方法:
// Seek to the beginning of the file before reading _, err := f.Seek(0, 0) if err != nil { fmt.Println("Error", err) } // Read 10 times r := bufio.NewReader(f) for i := 0; i < 10; i++ { str, _, err := r.ReadLine() if err != nil { if err == io.EOF { fmt.Println("Done") return } fmt.Println("Error", err) } fmt.Println("Read", string(str)) }
通过添加Seek方法,在读取之前将文件指针重置到文件的开头,允许后续的读取操作检索写入的数据,而不会导致io.EOF 错误。
以上是在 Go 中写入同一个 `os.File` 后读取时如何避免 `io.EOF`?的详细内容。更多信息请关注PHP中文网其他相关文章!