二进制打开,但是如果先读取再进行去除要删除的区域,严重占用cpu很长时间.只需要删除文件中的某些区域各位大侠有什么方法能实现呢?!

解决方案 »

  1.   

    只要数据是有序的,就没有“快”的方法。
    除非是无序的定长记录,可以将最后的记录移动到删除处。
      

  2.   

    你说的“先读取”,是一次全部读入虚拟内存?这样必然很慢,因为牵涉到虚拟内存磁盘交换。也就是把磁盘文件内容,转存到虚拟内存的磁盘缓存中。这是不必要的。你只需分块(块大小以不引起虚拟内存磁盘交换为度)读入磁盘文件中保留的部分,写入新的文件中。或者,将被删除的部分之后的内容分块读出,再次第写入因删除而提前的位置。二进制文件的好处,就是在打开时不会自动读入虚拟内存,因此不会在打开时“假死”。要充分利用之。
      

  3.   

    看样子也没什么好方法了,只能在保存前想想办法处理掉了谢谢各位了哈