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) { // 压缩包路径 // String zipPath = "F:\\testZip\\zipFile\\上传申请书证据材料.zip"; // 解压后存放路径 // String targetPath = "F:\\testZip\\unzipFile"; // unZipFile(new File(zipPath),targetPath); // String zipPath = "F:\\testZip\\unzipFile\\上传申请书证据材料"; // File dirUnzipPath = new File(zipPath); // List allFiles = new ArrayList<>(); // getFiles(dirUnzipPath,allFiles); // if(allFiles!=null&&allFiles.size()>0){ // for (File fileIter : allFiles) { // System.out.println(fileIter.getName()); // System.out.println(fileIter.getAbsolutePath()); // } // } String key = "\\"; String str = "F:\\testZip\\上传申请书证据材料\\证据材料\\仲裁裁决书模板.docx"; List allindex = new ArrayList<>(); int a = str.indexOf(key);//*第一个出现的索引位置 allindex.add(a); while (a != -1) { System.out.print(a + "\t"); a = str.indexOf(key, a + 1);//*从这个索引往后开始第一个出现的位置 allindex.add(a); } String substr = str.substring(allindex.get(1)+1,allindex.get(2)); System.out.println("substr---"+substr); } 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); } } } } }