为了账号安全,请及时绑定邮箱和手机立即绑定

附加到磁盘文件中的 golang gob

附加到磁盘文件中的 golang gob

Go
湖上湖 2021-10-18 11:02:54
我试图将gob编码的数据保存在磁盘上的文件中作为一个简单的数据存储。但是,当我下次打开它时,gob 编码器会忽略文件中已有的任何数据,并在发送数据之前重新发送已发送格式的定义。看到它gob.Encoder需要一个io.Writer,而不是一个io.ReadWriter,这是有道理的。编码器不知道文件中的内容,因为它无法从中读取。然而,这是非常低效的。它也不必要地难以解析,因为每次编码器在写入文件时重新启动时,您都必须重置解码器,因为 gob 类型 ID 可能已更改。如何继续写入包含 gob 数据的文件的末尾?我是否必须创建一个新文件,移动所有数据,以便 gob 编码器知道它已经发送了什么类型,或者有没有办法告诉编码器它应该已经知道什么类型,或者其他方式?我需要它跨软件重启工作。
查看完整描述

1 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

无法使用其他编码器在写入 gob 值流时所具有的状态来重建编码器。如果在附加值时无法使用原始编码器,那么您有几个选择:

  • 按照您的建议移动数据。

  • 使用成帧机制将多个 gob 流存储到单个文件中。例如,您可以使用该流的长度作为每个 gob 流的前缀。


查看完整回答
反对 回复 2021-10-18
  • 1 回答
  • 0 关注
  • 240 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信