java 上传zip压缩文件并且解压
public void parseAndAdd(MultipartFile zipFile) {//C:\Users\登录用户~1\AppData\Local\Temp\String pathName = System.getProperty("java.io.tmpdir") + "shpFileCache/";String dec = System.getProperty("java.io.tmpdir") + "shpFileCache/";File file = new File(pathName);//如果文件夹不存在 创建文件夹if (!file.exists()) {file.mkdir();}//获取文件名(包括后缀)String pname = zipFile.getOriginalFilename();pathName = pathName + UUID.randomUUID().toString().replaceAll("-", "") + "-" + pname;try {File dest = new File(pathName);zipFile.transferTo(dest);// 获取解压出来的文件名 不带后缀 List<String> fileNames = ZipUtil.unZip(dest, dec);//解析完成 删除本次解析中生成的文件 删除此目录下的所有文件//ZipUtil.deleteFile(dec);} catch (Exception e) {e.printStackTrace();}}
ZipUtil
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;/*** @author lww* @Description 文件解压相关工具类* @date 2021/7/22 11:19*/
public class ZipUtil {/*** zip解压** @param srcFile zip源文件* @param destDirPath 解压后的目标文件夹* @throws RuntimeException 解压失败会抛出运行时异常*/public static List<String> unZip(File srcFile, String destDirPath) throws RuntimeException {//记录解压出来的所有文件名List<String> filesName = new ArrayList<>();long start = System.currentTimeMillis();// 判断源文件是否存在if (!srcFile.exists()) {throw new RuntimeException(srcFile.getPath() + "所指文件不存在");}// 开始解压ZipFile zipFile = null;try {zipFile = new ZipFile(srcFile, Charset.forName("GBK"));Enumeration<?> entries = zipFile.entries();while (entries.hasMoreElements()) {ZipEntry entry = (ZipEntry) entries.nextElement();//添加进filesNamefilesName.add(entry.getName());System.out.println("解压文件:" + entry.getName());// 如果是文件夹,就创建个文件夹if (entry.isDirectory()) {String dirPath = destDirPath + "/" + entry.getName();File dir = new File(dirPath);dir.mkdirs();} else {// 如果是文件,就先创建一个文件,然后用io流把内容copy过去File targetFile = new File(destDirPath + "/" + entry.getName());// 保证这个文件的父文件夹必须要存在if (!targetFile.getParentFile().exists()) {targetFile.getParentFile().mkdirs();}targetFile.createNewFile();// 将压缩文件内容写入到这个文件中InputStream is = zipFile.getInputStream(entry);FileOutputStream fos = new FileOutputStream(targetFile);int len;byte[] buf = new byte[1024];while ((len = is.read(buf)) != -1) {fos.write(buf, 0, len);}// 关流顺序,先打开的后关闭fos.close();is.close();}}long end = System.currentTimeMillis();System.out.println("解压完成,耗时:" + (end - start) + " ms");} catch (Exception e) {throw new RuntimeException("unzip error from ZipUtils", e);} finally {if (zipFile != null) {try {zipFile.close();} catch (IOException e) {e.printStackTrace();}}}return filesName;}/*** 删除文件** @param filePath* @return*/public static boolean deleteFile(String filePath) {boolean flag = false;File file = new File(filePath);if (!file.exists()) {return flag;}if (!file.isDirectory()) {return flag;}String[] tempList = file.list();File temp;for (int i = 0; i < tempList.length; i++) {if (filePath.endsWith(File.separator)) {temp = new File(filePath + tempList[i]);} else {temp = new File(filePath + File.separator + tempList[i]);}if (temp.isFile()) {temp.delete();}if (temp.isDirectory()) {// 先删除文件夹里面的文件deleteFile(filePath + "/" + tempList[i]);// 再删除空文件夹deleteFile(filePath + "/" + tempList[i]);flag = true;}}return flag;}}
java 上传zip压缩文件并且解压相关推荐
- Zip压缩文件没有解压密码怎么办?
Zip压缩文件没有解压密码怎么办? 在平时,我们难免的需要到浏览器上面寻找一些需要的资源,可往往下载好了zip文件后,解压时却需要密码.真的让人很痛苦.那有没有什么办法可以破解zip解压时需要的密码呢 ...
- java解压zip_Java实现zip压缩文件的解压
需求描述: 前段时间写了一篇博客<Java实现对文本文件MD5加密并ftp传送到远程主机目录>,实现了一部分的业务需求.然而有些业务可能不止传送一个文件,有时候客户需要传多个文件,原有系统 ...
- Cocos2dx-Lua 使用Curl下载zip压缩文件并解压
因为工作上的需求要用到异步下载文件并解压使用,在网上找了一部分资料,发现好多都是零碎的,所以我在这里做个整合.(51开源时代) 首先还是要感谢 @iuoon 大佬提供的CurlDown源码和 @zsi ...
- Android--下载zip压缩文件并解压
网上有很多介绍下载文件或者解压zip文件的文章,但是两者结合的不多,在此记录一下下载zip文件并直接解压的方法,直接上代码. 源码下载:http://download.csdn.net/detail/ ...
- 最近很火的在线文件预览txt、doc、ppt、pdf、excel、jpg、png、zip、tar.gz等各种文件及压缩文件在线解压和预览,包括前后端设计和源码,编写搜索引擎多关键词检索名称和内容(四)
最近很火的在线文件预览txt.doc.ppt.pdf.excel.jpg.mp4.png.zip.tar.gz等各种文件及压缩文件在线解压和预览,包括前后端设计和源码,编写一个文件搜索引擎实现多关键词 ...
- 最近很火的在线文件预览txt、doc、ppt、pdf、excel、jpg、png、zip、tar.gz等各种文件及压缩文件在线解压和预览,包括前后端设计和源码,编写搜索引擎多关键词检索名称和内容(五)
最近很火的在线文件预览txt.doc.ppt.pdf.excel.jpg.mp4.png.zip.tar.gz等各种文件及压缩文件在线解压和预览,包括前后端设计和源码,编写一个文件搜索引擎实现多关键词 ...
- JAVA上传tiff格式文件
文章目录 Java上传tiff格式文件 Java上传tiff格式文件 加入pom依赖 <dependency><groupId>com.twelvemonkeys.imagei ...
- linux下tar gz bz2 tgz z等众多压缩文件的解压方法
对于刚刚接触Linux的人来说,一定会给Linux下一大堆各式各样的文件名给搞晕.别个不说,单单就压缩文件为例,我们知道在Windows下最常见 的压缩文件就只有两种,一是,zip,另一个是.rar. ...
- linux解压文件卡住,Linux系统下常见的压缩文件及解压方法
如果tar不支持j这个参数就先用 bzip2 -d xxx.tar.bz2 把它解压成.tar文件,然后再用 tar xvf xxx.tar 拆包. 压缩解压 linux下怎么解后缀名是gzip的文件 ...
最新文章
- python100以内自然数之和_python—100以内素数之和 python123
- 面试题:接口和抽象类的区别
- 类和对象—对象特性—拷贝构造函数调用时期
- 机器学习之正则化图文讲解
- linux登oracle登陆不了,oracle: linux服务器本机不能登陆的解决
- P4494-[HAOI2018]反色游戏【圆方树】
- 链表递增输出并释放空间
- SAP License:段的含义
- TFC2017 腾讯Web前端大会参会小结
- Spring Boot_打造企业级微信点餐系统_汇总贴
- c语言判断二叉树是不是二叉排序树_判断
- LaTex 符号大全
- 最简单的进制转换(三张图片搞定)
- Android ViewPager实现3D画廊效果
- IIC总线原理详细解析
- HL7 2.6解析转XML(C#版)
- Windows rundll32的用法-脚本命令管理打印机
- 如何取消坚果云的分享链接
- java实现支付宝扫码支付详细步骤
- 智力题:36匹马,6条跑道,没有计时器,至少需要多少次选出最快的三匹马