file - 写入文件然后立即在 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
创建一个空目标文件的源文件。
解决方案
您在文件的末尾,因此从那里读取不会返回任何新数据。寻找文件的开头:
source.Seek(0, io.SeekStart)
推荐阅读
- oracle - Oracle PLSQL refcursor%ROWTYPE 该表达式的类型声明不完整或格式错误
- ionic-framework - 如何为离子应用程序存储应用程序令牌和机密
- php - 检查数据库中数据的视图状态并停止链接闪烁
- pandas - 是否可以只从 pandas 导入 DataFrame 和读取 excel 的功能?
- python - 合并排序:如何以递减方式排序?
- sqlite - 需要在 Ionic 4 的 SQLite 中存储文件/pdf
- java - Selenium,如何复制几个总是不同的单词?
- javascript - 如何过滤多维数组对象
- ruby-on-rails - Rails 5:如何从 API 的响应中保存 Array of Hash 中的 uniq 元素
- kubernetes - 这里实际节点的 CPU 和内存容量是多少?