日期:2014-05-20  浏览次数:20766 次

java中标准输出流的使用问题
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. 怎样使第二次运行后写入的数据覆盖第一次的数据,而不是先清除后写入?

------解决方案--------------------
用RandomAccessFile的话,对文件结构是有要求的,一般三种做法:
1、自带索引信息;
2、定长数据片段;
3、分界标志符(这种需要控制好,否则有风险)。

如果文件结构完全规则,很容易就把自己玩死了。。。