首页 > 后端开发 > Golang > 在 Go 中写入同一个 `os.File` 后读取时如何避免 `io.EOF`?

在 Go 中写入同一个 `os.File` 后读取时如何避免 `io.EOF`?

Patricia Arquette
发布: 2024-12-14 08:53:14
原创
256 人浏览过

How to Avoid `io.EOF` When Reading After Writing to the Same `os.File` in Go?

在 Go 中读取和写入同一个 *os.File

理解问题

在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板