2017-11-05 20:15:28
- SequenceinputStream
SequenceinputStream:SequenceInputStream 表示其他輸入流的邏輯串聯。它從輸入流的有序集合開始,並從第一個輸入流開始讀取,直到到達文件末尾,接着從第二個輸入流讀取,依次類推,直到到達包含的最后一個輸入流的文件末尾為止。
*構造方法

*常用方法

public class Demo6 {
public static void main(String[] args) throws IOException {
InputStream in1 = new FileInputStream("E:/text.txt");
InputStream in2 = new FileInputStream("E:/text2.txt");
SequenceInputStream sis = new SequenceInputStream(in1, in2);
BufferedOutputStream bs = new BufferedOutputStream(new FileOutputStream("" +
"E:/copy.txt"));
byte[] bys = new byte[1024];
int len = 0;
while ((len = sis.read(bys)) != -1) {
bs.write(bys, 0, len);
}
bs.close();
sis.close();
}
}
如果超過兩個該怎么辦呢?其實該類還提供了另一個構造方法:public SequenceInputStream(Enumeration<? extends InputStream> e)
這里的Enumeration枚舉器是Vector類的一個方法的返回值:public Enumeration<E> elements()
剩下的就非常簡單了:
public class Demo6 {
public static void main(String[] args) throws IOException {
Vector<InputStream> v = new Vector<>();
InputStream in1 = new FileInputStream("E:/text.txt");
InputStream in2 = new FileInputStream("E:/text2.txt");
InputStream in3 = new FileInputStream("E:/text3.txt");
v.add(in1);
v.add(in2);
v.add(in3);
Enumeration<InputStream> enumeration = v.elements();
SequenceInputStream sis = new SequenceInputStream(enumeration);
BufferedOutputStream bs = new BufferedOutputStream(new FileOutputStream("" +
"E:/copy.txt"));
byte[] bys = new byte[1024];
int len = 0;
while ((len = sis.read(bys)) != -1) {
bs.write(bys, 0, len);
}
bs.close();
sis.close();
}
}
