java解压缩.zip文件
业务调用
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文件相关推荐
- java 文件解压缩zip_java解压缩zip文件
/* 提供zip文件的解压缩接口: AdapterZipFile: 输入:zipFileName(zip文件的绝对路径),outputDirectory(zip文件解压缩后的存放路径) 输出: 说明: ...
- 利用java进行zip文件解压缩
利用java进行zip文件解压缩 本文利用Java的zip包中的ZipFile和ZipEntry两个类,获取到压缩包中的所有文件,并将压缩文件通过InputStream写入一个byte数组,再将该by ...
- Java解压缩zip - 解压缩多个文件或文件夹
Java解压缩zip - 多个文件(包括文件夹) 对多个文件和文件夹进行压缩,对复杂的文件目录进行解压. 压缩方法使用的是可变参数,可以压缩1到多个文件..可以写数组的方式或者一个个写到参数列表里面. ...
- 利用Java进行zip文件压缩与解压缩
可能存在的业务情况: 1.用户上传了压缩包,需校验压缩包中的文件是否合格. 2.用户上传压缩包,对压缩包中的文件进行批量水印处理 解决思路: 1.读取原压缩包文件,解压缩至临时目录 2.对临时目录中的 ...
- java 操作Zip文件(压缩、解压、加密)
java 操作Zip文件(压缩.解压.加密) 依赖:点击下载 package com.zxl.test;import net.lingala.zip4j.model.ZipParameters; im ...
- Java实现Zip文件解压
2019独角兽企业重金招聘Python工程师标准>>> ##1. 两种java实现zip文件解压方式 使用JDK的原生类java.util.zip,上代码: import java. ...
- java zip文件操作,java 关于 zip 文件 的 基本操作
这里用的是appache的包 为了防止文件中文名乱码问题 java 操作 .zip 文件 压缩文件 解压文件 删除文件夹等 package com.gaeainfo.toponymbase.uti ...
- java下载zip文件损坏_使用Java下载.zip文件会导致损坏的.zip文件?
我写了这个方法来下载最新的Selenium Chrome驱动程序,它不起作用.它导致损坏的.zip文件.任何人都可以发现我的错误在哪里?使用Java下载.zip文件会导致损坏的.zip文件? priv ...
- 封装基于zlib的minizip库用于解压缩zip文件
开发中需要用到解压缩.zip文件的功能,查阅资料后尝试使用开源库zlib中提供的的minizip源码,这篇文章记录具体的调用实现和学习过程,方便后续问题发现和补充. 跨平台环境:C/C++ / Win ...
最新文章
- 入职阿里啦!极客时间kotlin
- 薪资涨幅60%,直通一线互联网公司的秘密......
- 计算机5800怎么开机,神舟5800笔记本怎么进bios
- ABP(现代ASP.NET样板开发框架)系列之2、ABP入门教程
- @async 默认线程池_Springboot线程池的使用和扩展
- ubuntu下搭建erlang编程环境
- scala学习手记15 - 独立对象和伴生对象
- PHP面试100题汇总
- c语言oct hex dec用法,C++ 如何用cout输出hex,oct,dec的解决方法
- 会网站seo技巧,提升流量不难
- cubieboard2 android,在cubieboard2双卡版上从零构建Android4.2.2系统
- 误删代码,回收站又被清空还没有备份教你如何解决
- 上百本中文书籍中对《人月神话》的引用(1)
- 【论文阅读|深读】GAS:Role-Oriented Graph Auto-encoder Guided by Structural Information
- python 模块paramiko
- CentOS之VI编辑器的常用命令
- c语言 以时间做种子的随机数,为什么用时间做种子,随机数还是一样的?
- 阶段总结:华清远见毕业总结
- 【android】解码.9图片及xml
- 服务器端口分配导致job重启
热门文章
- 几个多字节和UNICODE及UTF-8之间相互转化的函数
- textaligncenter仍然不居中_三星Galaxy S21/S21+保护膜曝光:居中挖孔 回归直屏_手机行情...
- sysbench 1.0.6 mysql_mysql sysbench 1.0.X
- 《GPUPro》笔记
- 容器技术:华为云如何帮助企业落地Kubernetes
- CSO安全手册中的七条守则
- BZOJ 1283 费用流
- POJ 1952 BUY LOW, BUY LOWER
- [leetcode] Merge k Sorted Lists
- jQuery之父:JavaScript的开发之路