java SequenceInputStream类(序列输入流)的用法示例

时间:2023-01-26 04:51:55
public class SequenceInputStreamextends InputStream
 

SequenceInputStream 表示其他输入流的逻辑串联。它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。

 

 

sequence[英][ˈsi:kwəns] [美][ˈsikwəns, -ˌkwɛns] 

n.[数]数列,序列;顺序;连续;片断插曲

vt.使按顺序排列,安排顺序;[生化]确定……的顺序,确定……的化学结构序列

 

 

示例代码
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Iterator;

public class SequenceInputStreamDemo {

 /**
  * @param args
  * @throws IOException
  */
 public static void main(String[] args) throws IOException {

  
  /*
   * 需求:将1.txt 2.txt 3.txt文件中的数据合并到一个文件中。
   */
  
//  Vector<FileInputStream> v = new Vector<FileInputStream>();  
//  v.add(new FileInputStream("1.txt"));
//  v.add(new FileInputStream("2.txt"));
//  v.add(new FileInputStream("3.txt"));
//  Enumeration<FileInputStream> en = v.elements();
  
  ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();
  for(int x=1; x<=3; x++){
   al.add(new FileInputStream(x+".txt"));
  }
  
  Enumeration<FileInputStream> en = Collections.enumeration(al);
  
  
  
  /*
  final Iterator<FileInputStream> it = al.iterator();
  Enumeration<FileInputStream> en = new Enumeration<FileInputStream>(){

   @Override
   public boolean hasMoreElements() {
    
    return it.hasNext();
   }

   @Override
   public FileInputStream nextElement() {
    
    return it.next();
   }
   
  };*/
  
  SequenceInputStream sis = new SequenceInputStream(en);
  
  FileOutputStream fos = new FileOutputStream("1234.txt");
  
  byte[] buf = new byte[1024];
  
  int len = 0;
  
  while((len=sis.read(buf))!=-1){
   fos.write(buf,0,len);
  }
  
  fos.close();
  sis.close();
  
 }

}