先上一张图片,大致说明一下SequenceInputStream的工作原理。。
/*思路:1.将三个流通过SequenceInputream合并成一个流
2.因为SequenceInputStream超过三个流对象,要用到Enumeration枚举
3.Enumerate枚举可以通过集合Vector的elements获取
4.最后,输出
步骤:1.先创建三个FileInputStream流对象
2.创建一个集合Vector对象,并添加三个流对象到该集合
3.通过Vector的elements()方法获取Enumeration对象
4.创建SequenceInputStream对象,并将Enumeration对象作为构造函数传入
5.创建FileOutputStream将SquenceInputStream对象读取的数据输出
6.关闭资源*/
import java.io.*;
import java.util.*;
class SequenceDemo
{
public static void main(String[] args) throws IOException
{
//创建FileInputStream流对象
FileInputStream fis1=new FileInputStream("a.txt");
FileInputStream fis2=new FileInputStream("b.txt");
FileInputStream fis3=new FileInputStream("c.txt");
//创建Vector集合对象
Vector<FileInputStream> vector=new Vector<FileInputStream>();
//添加输入流对象到集合Vector里
vector.add(fis1);
vector.add(fis2);
vector.add(fis3);
//得到Enumeration对象
Enumeration en=vector.elements();
//创建SequenceInputStream对象,将Enumeration对象传入
SequenceInputStream sis=new SequenceInputStream(en);
//创建字节输出流
FileOutputStream fos=new FileOutputStream("d.txt");
//创建缓冲区
byte[] buf=new byte[1024];
int len=0;
while((len=sis.read(buf))!=-1)
{
fos.write(buf,0,len);
}
sis.close();
fos.close();
}
}