java.lang.Object合并流,顾名思义,将两个或者多个输入流合并成一个。java.io.InputStream
java.io.SequenceInputStream
构造方法:
SequenceInputStream(Enumeration<? extends InputStream> e) 通过记住参数来初始化新创建的 SequenceInputStream ,该参数必须是生成运行时类型为 InputStream 对象的 Enumeration 型参数。 |
SequenceInputStream(InputStream s1, InputStream s2) 通过记住这两个参数来初始化新创建的 SequenceInputStream (将按顺序读取这两个参数,先读取 s1 ,然后读取 s2 ),以提供从此 SequenceInputStream 读取的字节。 |
常用方法:
int | available() 返回不受阻塞地从当前底层输入流读取(或跳过)的字节数的估计值,方法是通过下一次调用当前底层输入流的方法。 |
void | close() 关闭此输入流并释放与此流关联的所有系统资源。 |
int | read() 从此输入流中读取下一个数据字节。 |
int | read(byte[] b, int off, int len) 将最多 len 个数据字节从此输入流读入 byte 数组。 |
示例:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.SequenceInputStream;
public class SequenceInputStreamTest {
public static void main(String[] args) {
InputStream is1 = null;
InputStream is2 = null;
OutputStream os = null;
SequenceInputStream sis = null;
try {
is1 = new FileInputStream(new File("E:\\aa.txt"));
is2 = new FileInputStream(new File("E:\\bb.txt"));
sis = new SequenceInputStream(is1,is2);
os = new FileOutputStream(new File("E:\\cc.txt"));
int tmp = 0 ;
while((tmp =sis.read())!=-1){
os.write(tmp);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
// 关闭合并流
if(sis != null){
sis.close();
}
if(is1 != null){
is1.close(); // 关闭输入流1`
}
if(is2 != null){
is2.close(); // 关闭输入流2
}
if(os != null){
os.close(); // 关闭输出流
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}