想问下java中怎么更新文件内容呢?
查询了下API中提供的几个类都没有更新方法
Output类中都没有定位方法
看上去只能用RandomAccessFile来做,但是操作很麻烦
比如文件中有userId:2(字符流或字节流都可以)
现在想定位到2并把它改成3,有什么好的更新文件内容的方法吗?谢谢!!

解决方案 »

  1.   

    new一个RandomAccessFile,写模式
    seek到2的位置,然后写3很麻烦么?
    嫌麻烦的话,就把文件全读进来,然后内存中修改,再写回去
    实质上就不是更新了,而是创建了
      

  2.   

    要修改文件确实是很麻烦
    但是只能用RandomAccessFile类来做, 因为你先要找到你要修改的内容才能进行相应的操作。只有RandomAccessFile中提供定位的方法。同时提醒楼主,要是userId:2 你想修改成 userId:10 你就会发现实现起来非常复杂,因为文件的长度是一定的,你这里将2改成10,从一位数变成两位数,就会将后面的内容覆盖掉。有两种方式可以解决这个问题,第一种是上面说的那样,将文件整个读出来,修改之后再写回去,这样也有弊端,就是当文件很大的时候,系统开销相当大,不是很好第二种方式就是,如果文件的内容你可以控制的话,就将相应的数据的长度控制一下,例如,你要输入一个userID那这个位数就固定成10位,当你的userID没有10位的时候就用空格进行填充,这样就可以避免位数不一致时发生的数据覆盖问题。