Java中SequenceInputStream类

SequenceInputStream 表示其他输入流的逻辑串联(合并流)

构造方法

public SequenceInputStream(InputStream s1, InputStream s2)
通过记住这两个参数来初始化新创建的 SequenceInputStream(将按顺序读取这两个参数,先读取 s1,然后读取 s2)

public SequenceInputStream(Enumeration<? extends InputStream> e)
通过记住参数来初始化新创建的 SequenceInputStream,该参数必须是生成运行时类型为 InputStream 对象的 Enumeration 型参数。将按顺序读取由该枚举生成的输入流,以提供从此 SequenceInputStream 读取的字节。在用尽枚举中的每个输入流之后,将通过调用该流的 close 方法将其关闭。

程序示例

public static void main(String[] args) throws IOException {
        
    //封装源文件
    InputStream in1 = new FileInputStream("StringDemo.java") ;
    InputStream in2 = new FileInputStream("SystemInDemo.java") ;
        
    //创建合并流对象
    SequenceInputStream sis = new SequenceInputStream(in1, in2) ;
    //创建一个字节缓冲输入流对象
    BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("Copy.java"));
        
    //原来怎么读写,现在依然这样读写
    byte[] bys = new byte[1024] ;
    int len = 0 ;
    while((len=sis.read(bys))!=-1) {
        bos.write(bys, 0, len);
        bos.flush(); //读图片文件的时候
    }
        
    //关闭资源
    sis.close();
    bos.close();
        
}

public static void main(String[] args) throws IOException {
        //StringDemo.java+SystemInDemo.java+PrintWriterDemo.java--->Copy.java文件中
        
        //定义一个集合Vector
        Vector<InputStream> v  = new Vector<InputStream>() ;
        //使用InputStream封装文件
        InputStream s1 = new FileInputStream("StringDemo.java") ;
        InputStream s2 = new FileInputStream("SystemInDemo.java") ;
        InputStream s3 = new FileInputStream("PrintWriterDemo.java") ;
        
        //将流对象添加到集合中
        v.add(s1) ;
        v.add(s2) ;
        v.add(s3) ;
        
        //特有功能
        Enumeration<InputStream> en = v.elements() ;
        
        //创建合并输入流对象
        SequenceInputStream sis = new SequenceInputStream(en) ;
        //创建字节缓冲输出流对象
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("Copy.java")) ;
        
        //一次读取一个字节数组
        byte[] bys = new byte[1024] ;
        int len = 0 ;
        while((len=sis.read(bys))!=-1) {
            bos.write(bys, 0, len);
            bos.flush();
        }
        
        //关闭资源
        bos.close();
        sis.close();
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值