写入文件然后立即读回

正如标题所说,我在读回读取之前写入的文件时遇到问题。读取恐慌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创建一个空目标文件的源文件。


慕尼黑的夜晚无繁华
浏览 86回答 1
1回答

慕森王

你在文件的末尾,所以从那里读取不会返回任何新数据。寻找文件的开头:source.Seek(0, io.SeekStart)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go