如何创建一个部分可修改的二进制文件格式?



我正在创建我的自定义二进制文件扩展名。

我使用RIFF标准来编码数据。它似乎工作得很好。

但是有一些额外的要求:

  1. 二进制文件可以大到500mb。
  2. 当应用程序上的数据发生变化时,实时将数据保存到二进制文件。
  3. 应用程序可以在浏览器上运行

我面临的问题是,当我想保存数据时,它需要从内存中读取所有内容并重写整个二进制文件。

当数据量很小时,这不是问题。但是当它变得更大时,实时保存功能似乎是不可扩展的。

所以这个二进制文件的主要要求可以是:

  1. 能够部分读取二进制文件(原因是文件太大)
  2. 能够将更改的数据部分写入文件,而无需重写整个文件。
  3. 像。m3u8这样的流协议不是一个选项,我们不能将它分成块并使用单独的url指向它。

关于如何设计在这种情况下可扩展的二进制文件系统有什么指导吗?

这里有一个随机用户的回答已被删除。
我觉得不错。你可以收回你的答案,我将删除这个。

他说:
如果我们把文件设计成支持添加,那么我们就可以添加任何我们想要的数据,而不需要重写整个文件。


这个想法给了我一个很好的起点。

所以我可以在文件末尾添加越来越多的更改。
然后在文件中间放置废弃的旧数据块。
如果我想的话,我可以在以后重用这些过时的数据槽。

缺点是,当我有机会重写整个文件时,我需要清理过时的插槽。