controller中使用

 @PostMapping(value = "/importZip")public Result<?> importExcel(HttpServletRequest request) throws Exception {MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;// 获取上传文件对象MultipartFile file = multipartRequest.getFile("file");// 获取文件后缀 .zipString suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")).toLowerCase();// 获取文件名称(无后缀)String filenameorg = file.getOriginalFilename().substring(0,file.getOriginalFilename().lastIndexOf("."));if (!".zip".equals(suffix)){return Result.error("请上传 .zip 压缩文件");}// 临时文件目录String path = uploadPath+"/modal/"+filenameorg;File descDir = new File(path);if (descDir.isDirectory()){descDir.mkdirs();}// 保存压缩文件FileUtils.copyInputStreamToFile(file.getInputStream(), new File(descDir +"/"+ file.getOriginalFilename()));// 解压String unZipFilePath = ZipUtil.unZipFiles(path +"/"+ file.getOriginalFilename(),path);// 1.获取其中的Excel,List<File> excelfilelist = ZipUtil.readExcelFile(unZipFilePath);ExcelVerifyVo vo = null;try {vo = this.verify(excelfilelist, unZipFilePath);}catch (Exception e){e.printStackTrace();ZipUtil.deleteDir(new File(path));log.info("删除临时文件...");throw new RuntimeException("导入失败");}}

工具类


import com.xkcoding.http.util.StringUtil;
import lombok.extern.slf4j.Slf4j;import java.io.*;
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;@Slf4j
public class ZipUtil {/*** 解压zip文件** @param sourceFile 待解压的zip文件* @param descDir 解压后的存放路径* @return 解压后的文件夹 D:\解压后问价夹* @throws Exception**/public static String unZipFiles(String sourceFile, String descDir) throws IOException {// 解压目录不存在,就创建File descDirFile = new File(descDir);if (!descDirFile.exists()) {descDirFile.mkdirs();}// 创建zip压缩对象ZipFile zip = new ZipFile(sourceFile, Charset.forName("GBK"));// 解压后的文件夹 D:\解压后问价夹String orgMkdirs = "";for (Enumeration entries = zip.entries(); entries.hasMoreElements(); ) {ZipEntry entry = (ZipEntry) entries.nextElement();String zipEntryName = entry.getName();String outPath = (descDir + "/" + zipEntryName).replaceAll("\\*", "/");//判断路径是否存在,不存在则创建文件路径File file = new File(outPath.substring(0, outPath.lastIndexOf('/')));if (!file.exists()) {file.mkdirs();}orgMkdirs = outPath.substring(0, outPath.lastIndexOf('/'));//判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压if (new File(outPath).isDirectory()) {continue;}try(InputStream in =zip.getInputStream(entry);OutputStream out =new FileOutputStream(outPath)){byte[] buf1 = new byte[1024];int len;while ((len = in.read(buf1)) > 0) {out.write(buf1, 0, len);}}catch(IOException e){log.error("解压失败!");log.error(e.getMessage(),e);}}zip.close();return orgMkdirs;}/*** 递归删除文件及文件夹** @throws Exception* @author gaoyan* toFolder,解压后的存放路径**/public static boolean deleteDir(File dir) {if (dir.isDirectory()) {String[] children = dir.list();for (int i = 0; i < children.length; i++) {boolean success = deleteDir(new File(dir, children[i]));if (!success) {return false;}}}// 目录此时为空,可以删除return dir.delete();}/*** 读取一个目录下所有的Excel文件* gaoyan** @param path*/public static List<File> readExcelFile(String path) {File file = new File(path);List<File> resultlist = new ArrayList<>();if (file.isDirectory()) {File[] files = file.listFiles();for (File fi : files) {// 对文件进行过滤,只读取Excel文件if (fi.getName().contains(".xls")  || fi.getName().contains(".xlsx")) {resultlist.add(fi);}}}return resultlist;}/*** 根据文件名称读取固定目录下文件* gaoyan* @param filename*/public static List<File> readAllFileByFilename(String path, String filename) {List<File> resultlist = new ArrayList<>();if (StringUtil.isNotEmpty(path)){File file = new File(path);if (file.isDirectory()) {File[] files = file.listFiles();for (File fi : files) {// 对文件进行过滤if (fi.getName().equals(filename)) {resultlist.add(fi);}}}}return resultlist;}/*** 根据文件名称读取固定目录下文件* gaoyan* @param filename*/public static File readFileByFilename(String path, String filename) {List<File> resultlist = new ArrayList<>();if (StringUtil.isNotEmpty(path)){File file = new File(path);if (file.isDirectory()) {File[] files = file.listFiles();for (File fi : files) {// 对文件进行过滤if (fi.getName().equals(filename) && fi.isFile()) {return  fi;}}}}return null;}public static void main(String[] args) throws IOException {}}

java压缩解压文件工具类相关推荐

  1. java 万能解压zip工具类

    项目中有需要解压zip包,但是网上搜了下,工具类过于局限,故整理一个万能的解压zip的工具类.如果大家有更好的方式欢迎交流! 工具类1: /*** 解压文件到指定目录** @param zipFile ...

  2. java代码实现解压文件_Java压缩/解压文件的实现代码

    用java压缩/解压文件: import java.io.*; import java.awt.*; import java.awt.event.*; import java.util.*; impo ...

  3. zip包怎么解压oracle,使用jar与zip压缩解压文件的区别

    使用jar命令压缩和解压文件不会继承原来的权限,切记! 而使用zip/unzip压缩解压文件则会保留文件原来的权限等信息,因此使用压缩解压的时候尽量使用专业的工具 下面是测试内容和结果: 1.首先确认 ...

  4. 测试掌握的Linux解压,轻松掌握Linux压缩/解压文件的方法

    对于在Linux下解压大型的*.zip文件,相信大家一般都会通过使用winrar直接在smb中来进行解压的操作,虽然说最终可能能够解压但有时候会存在解压时间长或者网络原因出错等故障的情况出现.那么有没 ...

  5. 命令行下(bat)使用 Lhaplus 自动 压缩 解压文件 (含参数设定说明)

    命令行下(bat)使用 Lhaplus 自动 压缩 解压文件,参数设定 https://mp.csdn.net/console/editor/html/104400832 ■前言 准备测试数据,要压缩 ...

  6. WinRAR压缩解压文件

    使用WinRAR压缩管理器压缩解压文件详细步骤如下: ■ 压缩文件 ① 鼠标右键需要压缩的文件,点击"添加到压缩文件",具体操作步骤如图所示: ② 压缩后的对应文件压缩包会显示在桌 ...

  7. android zip解压出错,常见的压缩解压文件出错解决办法

    您是否遇到过精力了好久下回来的压缩吧,结果在解压过程中出现错误的情况呢?比如说此解压失败或压缩文件文件已经损坏?导致解压文件失败.如果遇到这种问题,那就试试常见的压缩解压文件出错解决办法吧.凡事求人不 ...

  8. tar多线程压缩解压文件

    tar多线程压缩解压文件 tar -czvf a.tar.gz ./* 测试每分钟压缩包a.tar.gz增长大约300M 安装多线程程序 yum -y install pigz 实测,4核的机器,2G ...

  9. java 7zip解压_Apache Commons Compress介绍-JAVA压缩解压7z文件

    7zip(下面简称7z)是由Igor Pavlov所开发的一种压缩格式,主要使用的压缩算法是LZMA/LZMA2.7z是一种压缩比非常高的格式,这与其压缩算法LZMA有直接关系,所以很多大文件都是用7 ...

最新文章

  1. python之time和datetime的常用方法
  2. CAS Tomcat配置
  3. 算法导论之python实现插入排序
  4. Java方法中的参数太多,第3部分:构建器模式
  5. 【Demo 0011】多媒体播放器
  6. 【ES11(2020)】Dynamic Import 动态引入
  7. java dayofweek_Java日期时间API系列22-----Jdk8中java.time包中的新的日期时间API类,Month月份和DayOfWeek星期的计算。...
  8. 《进击的虫师》百度文库下载器
  9. FFmpeg 和 MP4Box 几个命令
  10. sql服务器安全模式怎么修改,SQL Server 安全
  11. 5月市场平稳,期货成交量环比下降
  12. python提交表单发邮件_通过Mailgun和Python发送带有表单数据的电子邮件
  13. PTA 顺序表的基本操作
  14. dcm格式的文件里有什么,哪些对于深度学习模型训练有用
  15. 安装算量软件快速计算管道管件功能
  16. 信息源按加工深度划分_按文献信息资源内容加工深度可以将文献划分为哪些类型,并简要解释?...
  17. linux分区方案为user,Ubuntu 为用户分配磁盘空间Linux 硬盘分区方案
  18. [高项]应急储备VS管理储备
  19. 51la图片做网店流量统计
  20. 基于JAVA的简单迷宫游戏

热门文章

  1. 利用JS事件让你更加愉快地划水
  2. Qt for Python关于新6.3版本的详细信息
  3. 使用PCLPY进行点云图像融合
  4. MySQL5.7 常见调优参数速查
  5. MySQL狂神说笔记数据库笔记详解
  6. 真不戳,基于C++泛型编程的职工管理系统
  7. 蘑菇云matlab程序,貂蝉搞怪去衣福利图片欣赏(图文)
  8. python入门基础——综合实践(学生信息管理系统的构建)
  9. Devops之Gradle SpringBoot构建打包工程jar、搭建jenkins自动发布
  10. 华为鸿蒙系统用什么语言开发?