java学习笔记08

来源:互联网 发布:mac zip文件怎么打开 编辑:程序博客网 时间:2024/05/23 21:56

今天学习SequenceInputStream,它能够将几个输入流合并成一个,它的构造函数参数有一个为,SequenceInputStream(Enumeration<?>Vector<FileInputStream>>

v.add(newFileInputStream("D:\\file\\1.txt"));//将下面的流添加到v中去。

v.add(new FileInputStream("D:\\file\\2.txt"));

v.add(new FileInputStream("D:\\file\\3.txt"));

Enumeration<FileInputStream>  en=v.elements();//列出所有的元素

//将多个流合并

SequenceInputStream>

//将多个流里面的数据写到某个文件中去

FileOutputStream  fos=new FileOutputStream("D:\\file\\all.txt");

byte[]>

int>

  while((len=sis.read(b))!=-1){

fos.write(b,0len);

}

fos.close();

sis.close();

}


public static void merge2(){

//不适用Vector  用ArrayList因为效率更快

ArrayList<FileInputStream>>

al.add(new FIleIntputStream("D:\\file\\1.txt"));

al.add(new FileinputStream("D:\\file\\2.txt"));

al.add(new FileInputStream()"D:\\file\\3.txt");

Iterator<FileInputStream>>

Enumeration<FIleInputStream>  en=new Enumeration<FileInputStream>(){//Enumeration是接口,需要实现里面的方法

public boolean hasMoreElements(){

return it.hasNext();

}

public  FileInputStream  nextElements(){

return it.next();

}

};

      //合并流

SequenceInputStream  sis=new SequenceInputStream(en);

FileOutputStream>

int>

byte[]>

while((len=sis.read(b))!=-1){

fos.write(b,0,len);

}

fos.close();

sis.close();

}


这种方法跟上面差不过 区别就是一个用Vector 而这个方法有一个方法返回的是Enumeration 就是 elements()

ArrayList 集合没有通过迭代器    可以通过new一个Enumeration接口   然后重写里面的内容 ,将ArrayList里面的内容,转化成Enumeration,然后合并流

写到指定文件中去。

0 0