【java编程】IO流之SequenceInputStream类合并输入流再输出

时间:2022-03-22 16:39:52

先上一张图片,大致说明一下SequenceInputStream的工作原理。。

【java编程】IO流之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();
	}
}