SequenceInputStream类的简单介绍。以及用该类合并集合文件数据的程序代码。

来源:互联网 发布:四旋翼无人机控制算法 编辑:程序博客网 时间:2024/05/16 00:59
package SequenceInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.SequenceInputStream;import java.util.ArrayList;import java.util.Collections;import java.util.Enumeration;import java.util.Iterator;import java.util.Vector;public class SequenceInputStreamDemo {/** * @param args * @throws IOException  */public static void main(String[] args) throws IOException {/** * 需求:将多个文件数据进行合并到一个文件中。 *  * SequenceInputStream构造方法: * SequenceInputStream sis = new SequenceInputStream(Enumeration<? extends InputStream> e);//枚举变量参数 *///show1();//show2();show3();}public static void show3() throws IOException {ArrayList<InputStream> al = new ArrayList<InputStream>();for(int i = 1 ; i<4 ; i++){al.add(new FileInputStream(i+".txt"));}Enumeration<InputStream> en = Collections.enumeration(al); SequenceInputStream sis = new SequenceInputStream(en);//将三个数据源合并到一个数据源FileOutputStream fos = new FileOutputStream(new File("4.txt"));int len = 0;byte []bu = new byte[1024];while((len = sis.read(bu))!=-1){fos.write(bu, 0, len);}sis.close();fos.close();}public static void show2() throws IOException {ArrayList<InputStream> al = new ArrayList<InputStream>();for(int i = 1 ; i<4 ; i++){al.add(new FileInputStream(i+".txt"));}final Iterator<InputStream> it = al.iterator(); //内部类访问外部类中的成员变量,需要用final 修饰。Enumeration<InputStream> en = new Enumeration<InputStream>() {@Overridepublic boolean hasMoreElements() {return it.hasNext();}@Overridepublic InputStream nextElement() {return it.next();}};SequenceInputStream sis = new SequenceInputStream(en);//将三个数据源合并到一个数据源FileOutputStream fos = new FileOutputStream(new File("4.txt"));int len = 0;byte []bu = new byte[1024];while((len = sis.read(bu))!=-1){fos.write(bu, 0, len);}sis.close();fos.close();}public static void show1() throws IOException {Vector<InputStream> v = new Vector<InputStream>();v.add(new FileInputStream("1.txt"));v.add(new FileInputStream("2.txt"));v.add(new FileInputStream("3.txt"));Enumeration<InputStream> en = v.elements();//获得枚举变量SequenceInputStream sis = new SequenceInputStream(en);//将三个数据源合并到一个数据源FileOutputStream fos = new FileOutputStream(new File("4.txt"));int len = 0;byte []bu = new byte[1024];while((len = sis.read(bu))!=-1){fos.write(bu, 0, len);}sis.close();fos.close();}}