Java合併流使用介紹

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();
}  
      
}

}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章