如何从二进制文件中删除部分字节(使用标准C或C++)(100分)

其实就是链表的维护啊,翻数据结构
 
不管是C/C++还是Delphi中都没有直接删除一部分的内容,只有把后面的内容往前移覆盖掉
前面。
 
  这个比较棘手吧。
  你要是想实现不定长、无规则的删除,除非把被删处之后的数据往
前挪,覆盖被删的数据,才可以实现不定长、无规则的删除。
  但是这样开销太大了,如果你的二进制文件太大,而且删的是文件
头部的,不就意味着你要整个复制一遍文件了?
  如果是想实现定长又有规则的删除,譬如:若干笔结构体长度的数
据,你可以做个索引,简单一点,就是用另一个二进制文件来做索引。
索引存放的是“假设已被删除的,对应的结构体记录在文件中的偏移位
置。”
  你如果嫌二进制索引太麻烦,可以定期真实删除数据,再把该二进
制索引文件咔嚓掉,你的程序只判断该文件是否存在,不存在的话,还
是按照你原先的方法去读取数据,存在就多做一个判断。
  当然,这是比较土的方法,比较好的方法还是在你本身的数据文件
里再镶嵌个索引链表,释放和填充,循环利用。
 
文件好想是防止中间删除东西的,
呵呵,os上好象是这么写的
我也想不同为什么?
文件是索引存储的呀
 
时间太久,强制结束。
 
多人接受答案了。
 

Similar threads

回复
0
查看
519
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
顶部