Java IO流-合並流


2017-11-05 20:15:28

  • SequenceinputStream

SequenceinputStream:SequenceInputStream 表示其他輸入流的邏輯串聯。它從輸入流的有序集合開始,並從第一個輸入流開始讀取,直到到達文件末尾,接着從第二個輸入流讀取,依次類推,直到到達包含的最后一個輸入流的文件末尾為止。

*構造方法

*常用方法

public class Demo6 {

    public static void main(String[] args) throws IOException {
        InputStream in1 = new FileInputStream("E:/text.txt");
        InputStream in2 = new FileInputStream("E:/text2.txt");

        SequenceInputStream sis = new SequenceInputStream(in1, in2);
        BufferedOutputStream bs = new BufferedOutputStream(new FileOutputStream("" +
                "E:/copy.txt"));

        byte[] bys = new byte[1024];
        int len = 0;
        while ((len = sis.read(bys)) != -1) {
            bs.write(bys, 0, len);
        }

        bs.close();
        sis.close();
    }

}

如果超過兩個該怎么辦呢?其實該類還提供了另一個構造方法:public SequenceInputStream(Enumeration<? extends InputStream> e)

這里的Enumeration枚舉器是Vector類的一個方法的返回值:public Enumeration<E> elements()

剩下的就非常簡單了:

public class Demo6 {

    public static void main(String[] args) throws IOException {
        Vector<InputStream> v = new Vector<>();
        InputStream in1 = new FileInputStream("E:/text.txt");
        InputStream in2 = new FileInputStream("E:/text2.txt");
        InputStream in3 = new FileInputStream("E:/text3.txt");
        
        v.add(in1);
        v.add(in2);
        v.add(in3);

        Enumeration<InputStream> enumeration = v.elements();

        SequenceInputStream sis = new SequenceInputStream(enumeration);
        BufferedOutputStream bs = new BufferedOutputStream(new FileOutputStream("" +
                "E:/copy.txt"));

        byte[] bys = new byte[1024];
        int len = 0;
        while ((len = sis.read(bys)) != -1) {
            bs.write(bys, 0, len);
        }

        bs.close();
        sis.close();
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM