java压缩多个文件

/**
   * 功能:压缩多个文件成一个zip文件
   * @param srcfile:源文件列表
   * @param zipfile:压缩后的文件
   */
  public static void zipFiles(File[] srcfile,File zipfile){
    byte[] buf=new byte[1024];
    try {
      //ZipOutputStream类:完成文件或文件夹的压缩
      ZipOutputStream out=new ZipOutputStream(new FileOutputStream(zipfile));
      for(int i=0;i<srcfile.length;i++){
        FileInputStream in=new FileInputStream(srcfile[i]);
        out.putNextEntry(new ZipEntry(srcfile[i].getName()));
        int len;
        while((len=in.read(buf))>0){
          out.write(buf,0,len);
        }
        out.closeEntry();
        in.close();
      }
      out.close();
      System.out.println("压缩完成.");
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
  /**
   * 功能:解压缩
   * @param zipfile:需要解压缩的文件
   * @param descDir:解压后的目标目录
   */
  public static void unZipFiles(File zipfile,String descDir){
    try {
      ZipFile zf=new ZipFile(zipfile);
      for(Enumeration entries=zf.entries();entries.hasMoreElements();){
        ZipEntry entry=(ZipEntry) entries.nextElement();
        String zipEntryName=entry.getName();
        InputStream in=zf.getInputStream(entry);
        OutputStream out=new FileOutputStream(descDir+zipEntryName);
        byte[] buf1=new byte[1024];
        int len;
        while((len=in.read(buf1))>0){
          out.write(buf1,0,len);
        }
        in.close();
        out.close();
        System.out.println("解压缩完成.");
      }
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }

  }

  /**功能:
   * @param args
   * https://zcmlccontract.zcmlc.com/expiredate/2018/20180709/hgypdf/temporary_dianzi_709e9d7465ac0f10.pdf
   * https://zcmlccontract.zcmlc.com/expiredate/2018/20180709/hgypdf/temporary_dianzi_648edb3bce2ecc0a.pdf
   */
  public static void main(String[] args) {
      cc();
      
    //2个源文件
    File f1=new File("e:\\test\\a.pdf");
    File f2=new File("e:\\test\\b.txt");
    File[] srcfile={f1,f2};
    //压缩后的文件
    File zipfile=new File("e:\\test\\c.zip");
   // TestZIP.zipFiles(srcfile, zipfile);
    //需要解压缩的文件
    File file=new File("D:\\workspace\\flexTest\\src\\com\\biao\\test\\biao.zip");
    //解压后的目标目录
    String dir="D:\\workspace\\flexTest\\src\\com\\biao\\test\\";
   // TestZIP.unZipFiles(file, dir);

  }

//将url内容转换为输入流

 private static InputStream aa(String wurl){
    try {
         URL    url = new URL(wurl);
         HttpURLConnection conn = (HttpURLConnection)url.openConnection();    
          //设置超时间为3秒  
          conn.setConnectTimeout(3*1000);  
          //防止屏蔽程序抓取而返回403错误  
          conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");  
          //得到输入流  
          InputStream inputStream = conn.getInputStream();
          return inputStream;
    } catch (Exception e) {
        e.printStackTrace();
    }   
    return null;
  }

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    @RequestMapping(value = "zcmuserdata/{loanid}")
    public void userData(@PathVariable("loanid") String loanid,
            HttpServletRequest req,HttpServletResponse response) {
         try {
             ////
            List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
            ///////
            //获取需要的资料信息
            //1.获取用户身份证正反面url
            AcLoanApplyInfo apply = loanInfoIService.queryLoanBasicInfo(loanid);
            if(apply!=null){
                RealNameAuthentication cardNo = realNameAuthenticationService.querByIdentiyCardNo(apply.getCustIdCard());
                if(cardNo!=null){
                    String ZCMFJURL = FileUtils.getValueByPropertiesKey("ZCMFJURL", "resource.properties");
                    String idcardimg1 = cardNo.getIdcardimg1();//身份证正面照片
                    String idcardimg2 = cardNo.getIdcardimg2();//身份证反面照片
                    list.add(aa(ZCMFJURL+idcardimg1,"idcardimg1.png"));
                    list.add(aa(ZCMFJURL+idcardimg2,"idcardimg2.png"));
                }
            }
            //2.获取活体照片
            String rurl = geturl(loanid,"R");
            if(!"".equals(rurl)){
                list.add(aa(rurl,"livingphoto.png"));
            }
            //3.获取购物信息(天猫或者京东)
            String tmurl = geturl(loanid,"ADD_TM");
            if(!"".equals(tmurl)){
                list.add(aa(tmurl,"tm.png"));
            }
            String jdurl = geturl(loanid,"ADD_JD");
            if(!"".equals(jdurl)){
                list.add(aa(jdurl,"jd.png"));
            }
            //流处理
            String fileName="userdata.zip";
            ZipOutputStream out=new ZipOutputStream(response.getOutputStream());
            // 中文文件名必须转码为 ISO8859-1,否则为乱码
            String fileNameDown = new String(fileName.getBytes(), "ISO8859-1");
            // 作为附件下载
            response.setHeader("Content-Disposition", "attachment;filename=" + fileNameDown);
            byte[] buf=new byte[1024];
            for (Map<String, Object> map2 : list) {
                 InputStream in=(InputStream) map2.get("in");
                    out.putNextEntry(new ZipEntry(map2.get("name").toString()));
                    int len;
                    while((len=in.read(buf))>0){
                      out.write(buf,0,len);
                    }
                    out.closeEntry();
                    in.close();
            }
            out.close();
            log.info("ZCMuserData >>>output success==loanid="+loanid);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

猜你喜欢

转载自blog.csdn.net/shshjj/article/details/79744131