详解 序列输入流

(请观看本人博文——《详解 字节流》

SequenceInputStream 类:

概念

表示其他输入流的逻辑串联
它从输入流的有序集合开始,
从第一个输入流开始读取直到到达文件末尾
接着从第二个输入流读取
依次类推,直到到达包含的最后一个输入流的文件末尾为止

这个流强悍在可以合并多个InputStream的子类的文件的信息

那么,现在,本人来展示下这个流的构造方法

构造方法

  • SequenceInputStream(InputStream s1, InputStream s2)
    通过记住这两个参数来初始化新创建的 SequenceInputStream
    (将按顺序读取这两个参数,先读取 s1,然后读取 s2),
  • SequenceInputStream(Enumeration<? extends InputStream> e)
    通过记住参数来初始化新创建的 SequenceInputStream,
    该参数必须是生成运行时类型为 InputStream 对象的 Enumeration 型参数

现在,本人来展示下这个类的常用API

常用API

  • int available()
    返回不受阻塞地从当前底层输入流读取(或跳过)的字节数的估计值,
    方法是通过下一次调用当前底层输入流的方法
  • void close()
    关闭此输入流并释放与此流关联的所有系统资源
  • int read()
    从此输入流中读取下一个数据字节
  • int read(byte[] b, int off, int len)
    将最多 len 个数据字节从此输入流读入 byte 数组

那么,现在,本人来展示下部分API 的使用:

package edu.youzg.about_io.about_file.core.Test;

import edu.youzg.about_io.about_file.core.FanInfo;

import java.io.*;
import java.util.Enumeration;
import java.util.Properties;
import java.util.Vector;

public class Test {

    public static void main(String[] args) throws IOException, ClassNotFoundException {
        FileInputStream in1 = new FileInputStream("JoJo.properties");
        DataInputStream in2 = new DataInputStream(new FileInputStream("plantsVSzombies.mp4"));
        SequenceInputStream in = new SequenceInputStream(in1, in2);
        FileOutputStream out = new FileOutputStream(new File("summary.txt"));

        int len = 0;
        byte[] bytes = new byte[1024 * 8];
        while ((len = in.read(bytes))!= -1){
            out.write(bytes,0,len);
            out.flush();
        }
        out.close();
        in.close();

    }

}

现在,本人来展示下两个源文件信息:
在这里插入图片描述

在这里插入图片描述

本人再来展示下生成文件的信息:
在这里插入图片描述
可以看到,两个文件用不同流包装的文件,被代码合并成了一个指定文件。

(本人《详解 字节流》博文链接:https:////www.cnblogs.com/codderYouzg/p/12418463.html
(本人 I/O流总集篇 博文链接:https:////www.cnblogs.com/codderYouzg/p/12418404.html

posted @ 2020-03-05 09:42  在下右转,有何贵干  阅读(183)  评论(2编辑  收藏  举报