今天学习SequenceInputStream,它能够将几个输入流合并成一个,它的构造函数参数有一个为,SequenceInputStream(Enumeration<?>Vector<FileInputStream>>
v.add(newFileInputStream("D:\\file\\1.txt"));//将下面的流添加到v中去。
v.add(new FileInputStream("D:\\file\\2.txt"));
v.add(new FileInputStream("D:\\file\\3.txt"));
Enumeration<FileInputStream> en=v.elements();//列出所有的元素
//将多个流合并
SequenceInputStream>
//将多个流里面的数据写到某个文件中去
FileOutputStream fos=new FileOutputStream("D:\\file\\all.txt");
byte[]>
int>
while((len=sis.read(b))!=-1){
fos.write(b,0len);
}
fos.close();
sis.close();
}
public static void merge2(){
//不适用Vector 用ArrayList因为效率更快
ArrayList<FileInputStream>>
al.add(new FIleIntputStream("D:\\file\\1.txt"));
al.add(new FileinputStream("D:\\file\\2.txt"));
al.add(new FileInputStream()"D:\\file\\3.txt");
Iterator<FileInputStream>>
Enumeration<FIleInputStream> en=new Enumeration<FileInputStream>(){//Enumeration是接口,需要实现里面的方法
public boolean hasMoreElements(){
return it.hasNext();
}
public FileInputStream nextElements(){
return it.next();
}
};
//合并流
SequenceInputStream sis=new SequenceInputStream(en);
FileOutputStream>
int>
byte[]>
while((len=sis.read(b))!=-1){
fos.write(b,0,len);
}
fos.close();
sis.close();
}
这种方法跟上面差不过 区别就是一个用Vector 而这个方法有一个方法返回的是Enumeration 就是 elements()
ArrayList 集合没有通过迭代器 可以通过new一个Enumeration接口 然后重写里面的内容 ,将ArrayList里面的内容,转化成Enumeration,然后合并流
写到指定文件中去。