例如有一个文件
这个文件分三段  a,b,c  a,b,c的长度都不一样且都能转化为byte流。
我想用d替换b,(d与b的长度不一样)并使文件的结构为 a,d,c,请问应该怎样实现?
我查了 RandomAccessFile 类, 没有相应的替换或者从中间删除的操作。 请知道的指点一下。

解决方案 »

  1.   

    只是通过地址进行区分,d替换b后,c的地址也进行相应的变化。
      

  2.   

    用RandomAccessFile会把原来文件中对应的那个位置的值冲掉,这样如果你的d与b的长度不一样的话很可能会把c的部分内容也冲掉了,所以除非文件中记录是定长的否则最好不要用RandomAccessFile来读写。一般的做法是新生成一个临时文件,将源文件中的记录拷贝一份到临时文件中,修改完后把临时文件rename成源文件。
      

  3.   

    文件很大的,我曾经试图这么做过,但是Java报错,说是heap空间不够。
      

  4.   

    heap空间不够?!
    JVM对每个进程的heap空间有限制吗?
    操作系统应该没有限制吧,当然内存不能溢出
      

  5.   

    何必用自己写文件呢,用一个文件数据库吧,3个Binary类型的字段就OK了
      

  6.   

    如果内存溢出可以通过
    在Run...的配置界面中->arguments , VM arguments 中设置参数-Xms256m -Xmx1024m ,就可以将参数设置为1G
    设置虚拟机内存
      

  7.   

    拆分文件为3个,让后修改b为d,然后组张a,d,b为1个文件