IO流——(14) SequenceInputStream 序列流

序列流:

 

一、 API声明:

 

compact1, compact2, compact3

java.io

Class SequenceInputStream

  • All Implemented Interfaces:

    CloseableAutoCloseable


     
    public class SequenceInputStream
    extends InputStream

    A SequenceInputStream表示其他输入流的逻辑级联。 它从一个有序的输入流集合开始,从第一个读取到文件的结尾,然后从第二个文件读取,依此类推,直到最后一个输入流达到文件的结尾。

    从以下版本开始:

    JDK1.0

 二、作用示意图:

三、需求:将1.txt 2.txt 3.txt文件中的数据合并到一个文件中。

四、代码实现

public static void main(String[] args) throws IOException {
            Vector<FileInputStream> v =new Vector<FileInputStream>();
            v.add(new FileInputStream("1.txt"));
            v.add(new FileInputStream("2.txt"));
            v.add(new FileInputStream("3.txt"));

            Enumeration<FileInputStream> en = v.elements();
            SequenceInputStream sis=new SequenceInputStream(en);
            FileOutputStream fos =new FileOutputStream("4.txt");
            byte[] buf =new byte[1024];

            int len=0;
            while ((len=sis.read(buf))!=-1){

                fos.write(buf,0,len);
            }
            fos.close();
            sis.close();

        }

1.txt中数据。2、3 类似。

合并后的4.txt

由于Vertor是线程安全的,效率慢,所以为了提高速度,改为ArrayList。

private static void mergeFile() throws IOException {

        ArrayList<FileInputStream> al= new ArrayList<FileInputStream>();
        //添加三个文件
        for (int i=1;i<=3;i++){
            al.add(new FileInputStream(i+".txt"));
        }
        Enumeration<FileInputStream> enumeration = Collections.enumeration(al);
        SequenceInputStream sis = new SequenceInputStream(enumeration);
        FileOutputStream fos = new FileOutputStream("1234.txt");
        byte[] buf = new byte[1024];
        int len = 0;
        while((len=sis.read(buf))!=-1){
            fos.write(buf,0,len);
        }
        fos.close();
        sis.close();
    }

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

真香号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值