先上一张图片,大致说明一下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(); } }