版权声明:作者:changshuchao https://blog.csdn.net/changshuchao/article/details/89097477
合并流:SequenceInputStream
目的:把多个流合并为一个流。
接受InputStream的子类。
下面示例把普通流、缓冲字节流、内存流合并成一个流,示例代码如下:
public class TestSequence {
public static void main(String[] args) throws IOException {
testSequenceInputStream();
}
public static void testSequenceInputStream() throws IOException {
File file1 = new File("io"+File.separator+"source.txt");
File file2 = new File("io"+File.separator+"sourceWriter.txt");
/*普通流*/
InputStream in1 = new FileInputStream(file1);
/*缓冲流*/
BufferedInputStream in2 = new BufferedInputStream(new FileInputStream(file2));
/*内存流*/
byte[] data = "hahaha".getBytes();
ByteArrayInputStream in3 = new ByteArrayInputStream(data);
/*合并流,将上面三个流合并(合并流中不能放转换流,因为转换流是字符流,这里面的参数只能是字节流)*/
SequenceInputStream unionStream = new SequenceInputStream(in1,new SequenceInputStream(in2,in3));
byte[] result = new byte[10];
int len;
while((len = unionStream.read(result))!=-1){
System.out.print(new String(result,0,len));
}
in1.close();
in2.close();
in3.close();
unionStream.close();
}
}