欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java中的使用枚举来合并序列流

程序员文章站 2022-03-01 17:45:32
...

 /**
      * 合并分割的文件
      * 即:使用序列流来合并分割的文件
      * 注意:合并文件时,必须按之前的分割的文件顺序去合并,不然会出现错误
      * @throws IOException
      */
     public static void merge()throws IOException{
      File file1=new File("F:\\pic\\1.part");
      File file2=new File("F:\\pic\\2.part");
      ///通常不适用Vector效率比较慢
  /*    Vector<FileInputStream> v=new Vector<FileInputStream>();
      v.add(new FileInputStream(file1));
      v.add(new FileInputStream(file2));*/

//      Enumeration<FileInputStream> enu=Collections.enumeration(v);
//      Enumeration<FileInputStream> enu=v.elements();
      ///////////////////////////////这种方法:匿名内部类 可以试试//////////////////////////
      List<FileInputStream> list=new ArrayList<FileInputStream>();
      list.add(new FileInputStream(file1));
      list.add(new FileInputStream(file2));
      final Iterator<FileInputStream> item=list.iterator();//必须加上常量
      Enumeration<FileInputStream> en=new Enumeration<FileInputStream>() {
   public FileInputStream nextElement() {
    return item.next();
   }
   
   public boolean hasMoreElements() {
    return item.hasNext();
   }
  };
     SequenceInputStream sis=new SequenceInputStream(en);
//   SequenceInputStream sis=new SequenceInputStream(enu);
      FileOutputStream fos=new FileOutputStream("F:\\pic\\merge.jpg");
      int len=0;
      byte[]data=new byte[1024];
      while(-1!=(len=sis.read(data))){
       fos.write(data, 0, len);
       fos.flush();
      }
      fos.close();
      sis.close();
     }