首页 > 解决方案 > 写入文件然后立即在 go 中读回

问题描述

正如标题所说,我在读取之前写入的文件时遇到问题。读取恐慌与EOF. 我调试了各种go内部,似乎由于某种原因它无法从源中读取任何内容,尽管源已同步到文件系统(通过在写入后立即停止程序并检查文件来确认)cat)

这是代码

source, err := os.Create(DESKTOP + "/source.txt")
myPanic(err)

s := "Hello World\n"
_, err1 := source.Write([]byte(s))

myPanic(err1)
source.Sync()

buff := make([]byte, 56)
_, err2 := source.Read(buff)
myPanic(err2)e

如前所述,source.Sync()没有任何效果,但关闭文件并重新打开它可以解决问题。

文档os.Create()说明了文件是用 创建的O_RDWR,这向我表明可以以这种方式使用文件。我想我错过了一些东西。

只是为了完整起见:示例不是我遇到的原始问题,只是我研究后提出的最简单的可能案例。

最初我想复制os.Copy创建一个空目标文件的源文件。

标签: filegoio

解决方案


您在文件的末尾,因此从那里读取不会返回任何新数据。寻找文件的开头:

source.Seek(0, io.SeekStart)

推荐阅读