序列流:
特点:流对象的有序的排列。内部封装了一个有序集合,把流封装起来了
解决问题:将多个输入流合并成一个输入流。将多个源合并成一个源,对于多个源的操作会变得简单
功能:特殊之处在构造方法上。一初始化就合并了多个流进来。
使用的场景之一:对多个文件进行数据的合并,多个源对应一个目的。
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintStream; import java.io.SequenceInputStream; import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; public class SequenceInputStreamDemo { public static void main(String[] args) throws IOException { /* * 演示序列流,SequenceInputStream */ //如何获取一个Enumeration呢?Vector有,但是效率低,使用ArrayList ArrayList<FileInputStream> a = new ArrayList<FileInputStream>(); //添加三个输入流对象和具体的流关联 for(int x = 1;x<=3;x++){ a.add(new FileInputStream("tempfile\\"+x+".txt")); } //怎么通过ArrayList获取枚举接口,可以使用Collections工具类中的方法 Enumeration<FileInputStream> en = Collections.enumeration(a); //创建序列流对象,需要传递Enumeration SequenceInputStream ss = new SequenceInputStream(en); //创建目录,文件 FileOutputStream fos = new FileOutputStream("tempfile\\4.txt"); // PrintStream ps = System.out; byte[] buff = new byte[1024]; int len = 0; while((len=ss.read(buff))!=-1){ fos.write(buff, 0,len); // ps.println(new String(buff)); } fos.close(); ss.close(); } }