【发布时间】:2018-10-04 21:42:40
【问题描述】:
正如标题所说,我在读取之前写入的文件时遇到问题。读取与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 复制源文件,这会创建一个空的目标文件。
【问题讨论】: