正如标题所说,我在读取之前写入的文件时遇到问题。 EOF
读取困惑。我调试了各种 go 内部结构,似乎由于某种原因它无法从源读取任何内容,尽管源已同步到文件系统(通过在写入后立即停止程序并检查文件来确认猫
)
这是代码
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
复制源文件,这会创建一个空的目标文件。
最佳答案
您位于文件末尾,因此从那里读取不会返回任何新数据。查找文件的开头:
source.Seek(0, io.SeekStart)
关于file - 写入文件然后立即读回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52655571/