SequenceInputStream合并流

1.合并流

1.java.io.SequenceInputStream:可以操作多个文件,表示其他输入流的逻辑级联

1.1 构造方法一

1.public SequenceInputStream(InputStream s1,InputStream s2)
2.代码实现:
    需要:将当前项目下的BufferedReaderDemo2.java和Teacher.java
        复制到D:\EE_2113\day29\code\My.java
public class SequenceInputStreamDemo{
   public static void main(String[] args){
       //创建两个字节输入流对象
       FileInputStream fis1 = new FileInputStream("BufferedReaderDemo2.java") ;	
       FileInputStream fis2 = new FileInputStream("Teacher.java") ;
       //创建合并流对象
       SequenceInputStream sis = new SequenceInputStream(fis1,fis2) ;
       //创建字节缓冲输出流对象或者使用文件字节输出流对象
       FileOutputStream fos = new FileOutputStream("D:\\EE_2113\\day29\\code\\My.java") ;
       //一次读取一个字节数组
        byte[] bytes  = new byte[1024] ;
        int len = 0 ;
        while((len=sis.read(bytes))!=-1){
            //写
            fos.write(bytes,0,len);
        }
       //释放资源
        fos.close();
        sis.close();
       }
    }
        

1.2 构造方法二

1.public SequenceInputStream(Enumeration<? extends InputStream> e):操作两个或者更多文件
    List集合中子实现类Vector<E>-->特有的迭代器遍历方式Enumeration<E> elements()
2.代码实现
public class SequenceInputStreamDemo2{
    public static void main(String[] args){
        //创建一个Vector集合,存储类型为InputStream
        Vector<InputStream> v = new Vector<>() ;
        //创建三个字节输入流对象
        InputStream in1 = new FileInputStream("BufferedReaderDemo2.java");
        InputStream in2 = new FileInputStream("SequenceInputStreamDemo.java") ;
        InputStream in3 = new FileInputStream("Teacher.java") ;
        //添加到Vector集合中
        v.add(in1) ;
        v.add(in2) ;
        v.add(in3) ;
        //特有遍历方式
        Enumeration<InputStream> enumeration = v.elements();
        //创建合并流对象: public SequenceInputStream(Enumeration<? extends InputStream> e)
        //创建字节缓冲输出流对象,进行读写复制
        BufferedOutputStream bos = new BufferedOutputStream(
                new FileOutputStream("SequenceCopy.java")) ;
         //一次读取一个字节数组
            byte[] bytes = new byte[1024] ;
            int len = 0 ;
            while((len=sis.read(bytes))!=-1){
                bos.write(bytes,0,len) ;
                bos.flush();
        }
        //关闭流资源
        bos.close();
        sis.close();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值