追加到磁盘上文件中的 golang gob

2023-12-01

我正在努力拯救gob- 将数据编码在磁盘上的文件中作为简单的数据存储。但是,当我下次打开它时,gob 编码器只会忽略文件中已有的任何数据,并在发送数据之前开始发送已发送格式的定义。看见那个gob.Encoder需要一个io.Writer,而不是一个io.ReadWriter,这是有道理的。编码器不知道文件中有什么,因为它无法读取文件。

然而,这是相当低效的。它也不必要地难以解析,因为每次写入文件时重新启动编码器时都必须重置解码器,因为 gob 类型 ID 可能已更改。

如何继续写入包含 gob 数据的文件末尾?我是否必须创建一个新文件,移动所有数据,以便 gob 编码器知道它已经发送的类型,或者有没有办法让我告诉编码器它应该已经知道什么类型,或者其他方式?我需要它在软件重新启动时工作。


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

  • 按照您的建议移动数据。
  • 使用分帧机制将多个 gob 流存储到单个文件中。例如,您可以为每个 gob 流添加该流的长度前缀。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

追加到磁盘上文件中的 golang gob 的相关文章

随机推荐