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

 /**
      * 合并分割的文件
      * 即:使用序列流来合并分割的文件
      * 注意:合并文件时,必须按之前的分割的文件顺序去合并,不然会出现错误
      * @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();
     }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值