业务调用

 if ("zip".equals(extension)) {//压缩文件,返回新图片名称List<Map<String, String>> mapList = FileUnZip.unZip(photoPath, realPath, false);for (Map<String, String> map : mapList) {String newFilename = map.get("newFilename").toString();CasePhotos photos = new CasePhotos();photos.setId(KeyUtils.get32UUID());photos.setCaId(ca1.getId());photos.setPhotoId(newFilename);photos.setType("1");casePhotosService.insertSelective(photos);}}

FileUnZip工具类

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.util.*;public class FileUnZip {static final int BUFFER = 2048;/*** zip文件解压* zip文件中多层目录不做处理,全部解压到传入的filePath下* @param unZipfileName*            要解压缩的文件全路径* @param filePath*            文件解压缩到的位置* @return 压缩文件中的文件名和存储文件名* @throws Exception*/public static List<Map<String, String>> unZip(String unZipfileName,String filePath,boolean isYanZheng) throws Exception {List<Map<String, String>> result = new ArrayList<Map<String, String>>();try {ZipFile zipFile = new ZipFile(unZipfileName, "GB2312");Enumeration<?> emu = zipFile.getEntries();while (emu.hasMoreElements()) {ZipEntry entry = (ZipEntry) emu.nextElement();// 目录作为一个file读出,判断是目录则跳过。if (entry.isDirectory()) {continue;}String filePostfix = entry.getName().substring(entry.getName().lastIndexOf(".")).toLowerCase();
//              //判断文件
//              if(fileType != null && !fileType.contains(filePostfix))
//                  continue;String fileName = entry.getName().substring(entry.getName().lastIndexOf("/")+1);String oldFilename = entry.getName().substring(entry.getName().lastIndexOf("/")+1,entry.getName().lastIndexOf("."));String newFilename = "";if(isYanZheng){newFilename = oldFilename;//验证时文件名不重新生成}else{newFilename = KeyUtils.get32UUID();//导入是文件名重新生成}String newFilePath = filePath + "\\" + newFilename + filePostfix;//解压到临时文件夹中,文件名不变BufferedInputStream bis = null;BufferedOutputStream bos = null;FileOutputStream fos = null;try {bis = new BufferedInputStream(zipFile.getInputStream(entry));File file = new File(newFilePath);fos = new FileOutputStream(file);bos = new BufferedOutputStream(fos, BUFFER);int count;byte data[] = new byte[BUFFER];while ((count = bis.read(data, 0, BUFFER)) != -1) {bos.write(data, 0, count);}} finally {bos.flush();bos.close();bis.close();fos.close();}Map<String, String> map = new HashMap<String, String>();map.put("newFilePath", newFilePath);//解压后文件路径map.put("fileName", fileName);//解压前文件名有后缀map.put("newFilename", newFilename);//解压后无后缀System.out.println("newFilename="+newFilename);result.add(map);}zipFile.close();} catch (Exception e) {throw e;}return result;}
}

java解压缩.zip文件相关推荐

  1. java 文件解压缩zip_java解压缩zip文件

    /* 提供zip文件的解压缩接口: AdapterZipFile: 输入:zipFileName(zip文件的绝对路径),outputDirectory(zip文件解压缩后的存放路径) 输出: 说明: ...

  2. 利用java进行zip文件解压缩

    利用java进行zip文件解压缩 本文利用Java的zip包中的ZipFile和ZipEntry两个类,获取到压缩包中的所有文件,并将压缩文件通过InputStream写入一个byte数组,再将该by ...

  3. Java解压缩zip - 解压缩多个文件或文件夹

    Java解压缩zip - 多个文件(包括文件夹) 对多个文件和文件夹进行压缩,对复杂的文件目录进行解压. 压缩方法使用的是可变参数,可以压缩1到多个文件..可以写数组的方式或者一个个写到参数列表里面. ...

  4. 利用Java进行zip文件压缩与解压缩

    可能存在的业务情况: 1.用户上传了压缩包,需校验压缩包中的文件是否合格. 2.用户上传压缩包,对压缩包中的文件进行批量水印处理 解决思路: 1.读取原压缩包文件,解压缩至临时目录 2.对临时目录中的 ...

  5. java 操作Zip文件(压缩、解压、加密)

    java 操作Zip文件(压缩.解压.加密) 依赖:点击下载 package com.zxl.test;import net.lingala.zip4j.model.ZipParameters; im ...

  6. Java实现Zip文件解压

    2019独角兽企业重金招聘Python工程师标准>>> ##1. 两种java实现zip文件解压方式 使用JDK的原生类java.util.zip,上代码: import java. ...

  7. java zip文件操作,java 关于 zip 文件 的 基本操作

    这里用的是appache的包  为了防止文件中文名乱码问题 java 操作 .zip 文件  压缩文件 解压文件 删除文件夹等 package com.gaeainfo.toponymbase.uti ...

  8. java下载zip文件损坏_使用Java下载.zip文件会导致损坏的.zip文件?

    我写了这个方法来下载最新的Selenium Chrome驱动程序,它不起作用.它导致损坏的.zip文件.任何人都可以发现我的错误在哪里?使用Java下载.zip文件会导致损坏的.zip文件? priv ...

  9. 封装基于zlib的minizip库用于解压缩zip文件

    开发中需要用到解压缩.zip文件的功能,查阅资料后尝试使用开源库zlib中提供的的minizip源码,这篇文章记录具体的调用实现和学习过程,方便后续问题发现和补充. 跨平台环境:C/C++ / Win ...

最新文章

  1. 入职阿里啦!极客时间kotlin
  2. 薪资涨幅60%,直通一线互联网公司的秘密......
  3. 计算机5800怎么开机,神舟5800笔记本怎么进bios
  4. ABP(现代ASP.NET样板开发框架)系列之2、ABP入门教程
  5. @async 默认线程池_Springboot线程池的使用和扩展
  6. ubuntu下搭建erlang编程环境
  7. scala学习手记15 - 独立对象和伴生对象
  8. PHP面试100题汇总
  9. c语言oct hex dec用法,C++ 如何用cout输出hex,oct,dec的解决方法
  10. 会网站seo技巧,提升流量不难
  11. cubieboard2 android,在cubieboard2双卡版上从零构建Android4.2.2系统
  12. 误删代码,回收站又被清空还没有备份教你如何解决
  13. 上百本中文书籍中对《人月神话》的引用(1)
  14. 【论文阅读|深读】GAS:Role-Oriented Graph Auto-encoder Guided by Structural Information
  15. python 模块paramiko
  16. CentOS之VI编辑器的常用命令
  17. c语言 以时间做种子的随机数,为什么用时间做种子,随机数还是一样的?
  18. 阶段总结:华清远见毕业总结
  19. 【android】解码.9图片及xml
  20. 服务器端口分配导致job重启

热门文章

  1. 几个多字节和UNICODE及UTF-8之间相互转化的函数
  2. textaligncenter仍然不居中_三星Galaxy S21/S21+保护膜曝光:居中挖孔 回归直屏_手机行情...
  3. sysbench 1.0.6 mysql_mysql sysbench 1.0.X
  4. 《GPUPro》笔记
  5. 容器技术:华为云如何帮助企业落地Kubernetes
  6. CSO安全手册中的七条守则
  7. BZOJ 1283 费用流
  8. POJ 1952 BUY LOW, BUY LOWER
  9. [leetcode] Merge k Sorted Lists
  10. jQuery之父:JavaScript的开发之路