Java SequenceInputStream 序列流

来源:互联网 发布:office mac 威锋 编辑:程序博客网 时间:2024/05/22 04:46

Java SequenceInputStream 序列流


概述

  • 序列流可以把多个字节输入流整合成一个, 从序列流中读取数据时, 将从被整合的第一个流开始读, 读完一个之后继续读第二个, 以此类推

SequenceInputStream

  • 构造方法
构造方法 说明 SequenceInputStream(InputStream s1, InputStream s2) 整合两个流 SequenceInputStream(Enumeration e) 整合多个流,多个流通过枚举方式传入
  • 方法
方法 说明 read() 从此输入流中读取下一个数据字节 read(byte[] b, int off, int len) 将最多 len 个数据字节从此输入流读入 byte 数组 close() 关闭此输入流并释放与此流关联的所有系统资源

示例

  • 整合两个流
InputStream input1 = null;InputStream input2 = null;SequenceInputStream input = null;OutputStream output = null;try{    // 创建两个输入流    input1 = new FileInputStream("E:/郭静 - 心墙.mp3");    input2 = new FileInputStream("E:/许廷铿 - 遗物.mp3");    // 创建序列流和输出流    input = new SequenceInputStream(input1,input2);    output = new FileOutputStream("E:/歌曲整合.mp3");    byte[] buffer = new byte[1024 * 8];    int len;    // 读写数据    while((len = input.read(buffer)) > 0) {        output.write(buffer, 0, len);    }    System.out.println("Done.");}catch(IOException e) {    e.printStackTrace();}finally {    try {        // 关闭序列流        if(input != null) {            input.close();        }    } catch (IOException e) {        e.printStackTrace();    } finally {        try{            // 关闭输入流            if(output != null) {                output.close();            }        }catch(IOException e) {            e.printStackTrace();        }    }}
  • 整合多个流
InputStream input1 = null;InputStream input2 = null;InputStream input3 = null;SequenceInputStream input = null;OutputStream output = null;try{    // 创建两个输入流    input1 = new FileInputStream("E:/郭静 - 心墙.mp3");    input2 = new FileInputStream("E:/许廷铿 - 遗物.mp3");    input3 = new FileInputStream("E:/方雅贤 - 遇到.mp3");    Vector<InputStream> vec = new Vector<>();    vec.add(input1);    vec.add(input2);    vec.add(input3);    // 将 Vector 中的元素取出,存入枚举中    Enumeration<InputStream> elements = vec.elements();    // 创建序列流和输出流    input = new SequenceInputStream(elements);    output = new FileOutputStream("E:/歌曲整合.mp3");    byte[] buffer = new byte[1024 * 8];    int len;    // 读写数据    while((len = input.read(buffer)) > 0) {        output.write(buffer, 0, len);    }    System.out.println("Done.");}catch(IOException e) {    e.printStackTrace();}finally {    try {        // 关闭序列流        if(input != null) {            input.close();        }    } catch (IOException e) {        e.printStackTrace();    } finally {        try{            // 关闭输入流            if(output != null) {                output.close();            }        }catch(IOException e) {            e.printStackTrace();        }    }}
0 0
原创粉丝点击