美文网首页
2022-04-12. zip文件压缩与解压

2022-04-12. zip文件压缩与解压

作者: blockstrong | 来源:发表于2022-04-19 06:40 被阅读0次

    zip 压缩
    /**

    • 压缩文件-由于out要在递归调用外,所以封装一个方法用来
    • 调用ZipFiles(ZipOutputStream out,String path,File... srcFiles)
    • @param zip
    • @param path
    • @param srcFiles
    • @throws IOException
    • @author isea533
      /
      public static void ZipFiles(File zip,String path,File... srcFiles) throws IOException{
      ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zip));
      ZipTest.ZipFiles(out,path,srcFiles);
      out.close();
      System.out.println("*****************压缩完毕*******************");
      }
      /
      *
    • 压缩文件-File
    • @param zipFile zip文件
    • @param srcFiles 被压缩源文件
    • @author isea533
      /
      public static void ZipFiles(ZipOutputStream out,String path,File... srcFiles){
      path = path.replaceAll("\
      ", "/");
      if(!path.endsWith("/")){
      path+="/";
      }
      byte[] buf = new byte[1024];
      try {
      for(int i=0;i<srcFiles.length;i++){
      if(srcFiles[i].isDirectory()){
      File[] files = srcFiles[i].listFiles();
      String srcPath = srcFiles[i].getName();
      srcPath = srcPath.replaceAll("\*", "/");
      if(!srcPath.endsWith("/")){
      srcPath+="/";
      }
      out.putNextEntry(new ZipEntry(path+srcPath));
      ZipFiles(out,path+srcPath,files);
      }
      else{
      FileInputStream in = new FileInputStream(srcFiles[i]);
      System.out.println(path + srcFiles[i].getName());
      out.putNextEntry(new ZipEntry(path + srcFiles[i].getName()));
      int len;
      while((len=in.read(buf))>0){
      out.write(buf,0,len);
      }
      out.closeEntry();
      in.close();
      }
      }
      } catch (Exception e) {
      e.printStackTrace();
      }
      }

    zip 解压

    /**

    • 解压到指定目录
    • @param zipPath
    • @param descDir
    • @author isea533
      /
      public static void unZipFiles(String zipPath,String descDir)throws IOException{
      unZipFiles(new File(zipPath), descDir);
      }
      /
      *
    • 解压文件到指定目录
    • @param zipFile
    • @param descDir
    • @author isea533
      /
      @SuppressWarnings("rawtypes")
      public static void unZipFiles(File zipFile,String descDir)throws IOException{
      File pathFile = new File(descDir);
      if(!pathFile.exists()){
      pathFile.mkdirs();
      }
      ZipFile zip = new ZipFile(zipFile);
      for(Enumeration entries = zip.getEntries();entries.hasMoreElements();){
      ZipEntry entry = (ZipEntry)entries.nextElement();
      String zipEntryName = entry.getName();
      InputStream in = zip.getInputStream(entry);
      String outPath = (descDir+zipEntryName).replaceAll("\
      ", "/");;
      //判断路径是否存在,不存在则创建文件路径
      File file = new File(outPath.substring(0, outPath.lastIndexOf('/')));
      if(!file.exists()){
      file.mkdirs();
      }
      //判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压
      if(new File(outPath).isDirectory()){
      continue;
      }
      //输出文件路径信息
      System.out.println(outPath);

    OutputStream out = new FileOutputStream(outPath);
    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("******************解压完毕********************");
    }

    测试方法
    public static void main(String[] args) throws IOException {
    /**

    • 压缩文件
      */
      File[] files = new File[]{new File("d:/English"),new File("d:/发放数据.xls"),new File("d:/中文名称.xls")};
      File zip = new File("d:/压缩.zip");
      ZipFiles(zip,"abc",files);

    /**

    • 解压文件
      */
      File zipFile = new File("d:/压缩.zip");
      String path = "d:/zipfile/";
      unZipFiles(zipFile, path);
      }

    相关文章

      网友评论

          本文标题:2022-04-12. zip文件压缩与解压

          本文链接:https://www.haomeiwen.com/subject/sfdgsrtx.html