我想达到这样一种操作,就是把一个文件从文件头部开始到指定长度的一段去掉,再写回原文件。
我用流操作(tMemorystream)进行操作,当操作到大文件(>50M)时,速度慢得不得了,而且严重占用内存,对机器的影响很大。谁能提供一种高效的办法,特别是针对大文件?
(附:现在经常有一种病毒往EXE文件头部加入一个外壳,这个操作的目的就是把这一段去掉!函数形式是:function CutFileHead(fln:string;pos:longint):boolean)

解决方案 »

  1.   

    可以利用windows虚拟内存的管理机制。
      

  2.   

    就是说用什么样的算法实现高效,主要是针对大文件,比如有游戏安装EXE可能达到500M以上。
      

  3.   

    pe文件 可以以补丁的 方式直接修改.
    这个要研究 pe格式
    raw address 直接修改
      

  4.   

    如果是清理病毒的话,你不去掉也可以,把前面用jmp到实际地址,其他的用0字节填充,否则文件的读写确实要命,但你用流来也的确太蛮了,如果非要读写的话,也应该是读一点写一点