SequenceInputStream--序列流

序列流:
特点:流对象的有序的排列。内部封装了一个有序集合,把流封装起来了
解决问题:将多个输入流合并成一个输入流。将多个源合并成一个源,对于多个源的操作会变得简单
功能:特殊之处在构造方法上。一初始化就合并了多个流进来。

使用的场景之一:对多个文件进行数据的合并,多个源对应一个目的。

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();
        
    }

}
原文地址:https://www.cnblogs.com/qjlbky/p/5914185.html