我正在设计一种自定义二进制文件格式,允许我重写部分文件而不会覆盖整个文件。数据由长度可变的“元素”组成。可以在文件中删除,插入或修改这些元素。这种修改可能会改变元素的长度。
以下是我正在考虑的事项:
该文件有两个主要部分:标题和正文。
身体被分解成预定大小的块,平均可容纳100个元素。在创建元素时,会将它们写入第一个块,并留下足够的空间来容纳它。
我的问题: 如果我需要增加标题的大小,我需要重写整个主体以创建额外的标题空间。如果标题是一个单独的文件,我不会有这个问题,但我不喜欢有两个文件的想法。有没有办法让标题和正文保持一个物理文件,但是每个文件都能够独立于另一个进行扩展吗?
答案 0 :(得分:3)
您的文件格式应支持彼此链接的标头列表。
在标题中,有一个字段“next”,指向文件中下一个标题的位置。如果您需要添加标题,请将其添加到文件末尾,然后将其在文件中的位置写入前一个标题的“下一个”字段。
我的观点:为什么在已经有像SQLite这样的解决方案可以轻松使用的情况下发明新格式?