二进制文件怎么实时保存修改后的数据

gp341 2016-08-03 11:23:56
我想自己定义一个二进制数据格式, 要能实时保存修改后的数据, 主要是修改后的数据比以前字节数变大了, 这样怎么保存呢?

我的做法是使用二进制文件打开后, 记录每个数据的文件位置, 当某个数据修改后, 切修改的数据变大, 那么将原来的数据标记为删除, 然后将新数据添加到文件末尾, 这样是不是原来的数据没有真正被删除, 容易出现冗余, 请问有什么好的思路吗?
...全文
248 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_whales 2016-08-04
  • 打赏
  • 举报
回复
需要删除标记的话,那就适时整理被删除的数据 合并删除区 不能让他无限增大 就像内存分配一样 要适时清理被删除的数据
gp341 2016-08-04
  • 打赏
  • 举报
回复
引用 1 楼 tftetfte 的回复:
只是原来数据标记删除了,实际数据还保留,所以数据会也来越大,你应该删除原来到的数据。
在文件里删除不方便啊 删除的数据可能在文件的任何位置。 修改很频繁的 如果每次删除都要修改文件也吃不消
gp341 2016-08-04
  • 打赏
  • 举报
回复
引用 2 楼 lm_whales 的回复:
如果增加的数据,超出原来的数据 可以1)新建文件处理 2)插入数据的后面的所有数据,誊抄到后面 再插入新数据 至于插入删除标志一般用不上 除非设计良好的结构。 插入删除标记,对于普通的,没有精心定义的二进制文件,并不是好办法 如果文件结构是精心定义的,例如Tiff那么,设置删除标记,适合很好的办法
引用 2 楼 lm_whales 的回复:
如果增加的数据,超出原来的数据 可以1)新建文件处理 2)插入数据的后面的所有数据,誊抄到后面 再插入新数据 至于插入删除标志一般用不上 除非设计良好的结构。 插入删除标记,对于普通的,没有精心定义的二进制文件,并不是好办法 如果文件结构是精心定义的,例如Tiff那么,设置删除标记,适合很好的办法
主要是修改数据也很频繁 那么标记删除的数据就很多了 浪费很大啊
ooolinux 2016-08-04
  • 打赏
  • 举报
回复
用删除标记,运行一段时间调用pack(编个函数)压缩文件,就是把标记删除的真正删除。
lm_whales 2016-08-03
  • 打赏
  • 举报
回复
如果增加的数据,超出原来的数据 可以1)新建文件处理 2)插入数据的后面的所有数据,誊抄到后面 再插入新数据 至于插入删除标志一般用不上 除非设计良好的结构。 插入删除标记,对于普通的,没有精心定义的二进制文件,并不是好办法 如果文件结构是精心定义的,例如Tiff那么,设置删除标记,适合很好的办法
Myotonin 2016-08-03
  • 打赏
  • 举报
回复
只是原来数据标记删除了,实际数据还保留,所以数据会也来越大,你应该删除原来到的数据。

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧