package IO;
import java.io.*;
public class SequenceStreamDemo {
    public static void main(String[] args) throws Exception {
OutputStream ops=null;
InputStream ips1=null;
InputStream ips2=null;
SequenceInputStream sips=null;
ips1=new FileInputStream(new File("D:"+File.separator+"A.txt"));
ips2=new FileInputStream(new File("D:"+File.separator+"B.txt"));
ops=new FileOutputStream(new File("D:"+File.separator+"AB.txt"),true);
sips=new SequenceInputStream(ips1,ips2);
        int temp=0;
        while((temp=sips.read())!=-1){
         ops.write(temp);
        }
        ops.close();
        ips1.close();
        ips2.close();
        sips.close();
     }
}
这是合并流的使用实例,这儿运行后会把A.txt和B.txt的数据一起读取后写到AB.txt。当我把
A.txt的数据减少时,在次运行后,第一次写到AB.txt的数据被清除后把第二次的数据写入到
AB.txt.  怎样使第二次运行后写入的数据覆盖第一次的数据,而不是先清除后写入?

解决方案 »

  1.   

    用FileOutputStream不行,要么是追加模式(append),要么是重建。得用:RandomAccessFile,但读取和写入位置的问题,就需要自己注意控制了。
      

  2.   

    RandomAccessFile写入到文件中的数据如果是writeInt(),writeUTF()很容易出现乱码,writeInt()的乱码到现在都不知道怎么解决
      

  3.   

    用RandomAccessFile的话,对文件结构是有要求的,一般三种做法:
    1、自带索引信息;
    2、定长数据片段;
    3、分界标志符(这种需要控制好,否则有风险)。如果文件结构完全规则,很容易就把自己玩死了