package com.ruoyi.wisdomarbitrate.utils; import lombok.extern.slf4j.Slf4j; 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; @Slf4j public class UnZipFileUtils { public static void main(String[] args) { File file = new File("D:\\home\\ruoyi\\仲裁委项目-测试单.zip"); String targetPath = "D:\\home\\unzip\\"; unZipFile(file,targetPath); } public static boolean unZipFile(File aboriginalFile, String targetPath) { if (!aboriginalFile.exists()) { log.error("此文件不存在:", aboriginalFile.getPath()); return false; } try { ZipFile srcZipFile = new ZipFile(aboriginalFile, Charset.forName("GBK")); for (Enumeration enumeration = srcZipFile.entries(); enumeration.hasMoreElements(); ) { ZipEntry entryZip = (ZipEntry) enumeration.nextElement(); //若是文件夹,就创建文件夹 if (entryZip.isDirectory()) { String directPath = targetPath + File.separator + entryZip.getName(); File directFile = new File(directPath); boolean makeDirs = directFile.mkdirs(); System.out.println("创建文件夹是否成功:" + makeDirs); } else { //若是文件,就创建文件 File sourceFile = new File(targetPath + File.separator + entryZip.getName()); if (!sourceFile.getParentFile().exists()) { boolean mDirect = sourceFile.getParentFile().mkdirs(); System.out.println("创建压缩文件时,创建父文件夹是否成功:" + mDirect); } boolean newUnZipFile = sourceFile.createNewFile(); if (newUnZipFile) { // 将压缩文件内容写入到这个文件中 try { InputStream is = srcZipFile.getInputStream(entryZip); FileOutputStream fos = new FileOutputStream(sourceFile); int len; byte[] buf = new byte[2048]; while ((len = is.read(buf)) != -1) { fos.write(buf, 0, len); } } catch (Exception e) { log.error("解压失败", e); } } } } return true; } catch (IOException e) { log.error("解压失败", e); return false; } } public static void getFiles(File fileSource, List allFiles) { if (!fileSource.exists()) { System.out.println("目录不存在"); return; } File[] fileArray = fileSource.listFiles(); if (fileArray != null && fileArray.length > 0) { for (File fileIter : fileArray) { if (fileIter.isDirectory()) { getFiles(fileIter, allFiles); } else { allFiles.add(fileIter); } } } } }