详解 序列输入流
(请观看本人博文——《详解 字节流》)
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)