diff --git a/jero-boot/jero-boot-module-certification/src/main/java/com/jero/modules/cert/template/service/impl/ParamsInfoEOServiceImpl.java b/jero-boot/jero-boot-module-certification/src/main/java/com/jero/modules/cert/template/service/impl/ParamsInfoEOServiceImpl.java index 56f0677fe..08984c368 100644 --- a/jero-boot/jero-boot-module-certification/src/main/java/com/jero/modules/cert/template/service/impl/ParamsInfoEOServiceImpl.java +++ b/jero-boot/jero-boot-module-certification/src/main/java/com/jero/modules/cert/template/service/impl/ParamsInfoEOServiceImpl.java @@ -710,7 +710,7 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl excelfilelist = FileUnZip.readExcelFile(zipEntryName); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/common/FileUnZip.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/common/FileUnZip.java index 9962c9ba9..6b49c5eca 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/common/FileUnZip.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/common/FileUnZip.java @@ -76,6 +76,55 @@ public class FileUnZip { return orgMkdirs; } + /** + * 解压zip文件 + * 解决解压文件下有多个文件夹时,读不到orgMkdirs问题 + * @param sourceFile,待解压的zip文件; descDir,解压后的存放路径 + * @throws Exception + * @author gaoyan + **/ + public static String unZipFiles2(String sourceFile, String descDir) throws IOException { + File zipFile = new File(sourceFile); + + File pathFile = new File(descDir); + if (!pathFile.exists()) { + pathFile.mkdirs(); + } + ZipFile zip = new ZipFile(zipFile,"gbk"); + String orgMkdirsLast = ""; + for (Enumeration entries = zip.getEntries(); entries.hasMoreElements(); ) { + ZipEntry entry = (ZipEntry) entries.nextElement(); + String zipEntryName = entry.getName(); + String outPath = (descDir + "/" + zipEntryName).replaceAll("\\*", "/"); + orgMkdirsLast = zipEntryName.substring(0, zipEntryName.indexOf('/')); + //判断路径是否存在,不存在则创建文件路径 + File file = new File(outPath.substring(0, outPath.lastIndexOf('/'))); + if (!file.exists()) { + file.mkdirs(); + } + //判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压 + if (new File(outPath).isDirectory()) { + continue; + } + //输出文件路径信息 +// InputStream in = null; +// OutputStream out = null; + 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){ + logger.error(e.getMessage(),e); + } + } + zip.close(); + String orgMkdirs = descDir + "/" + orgMkdirsLast; + return orgMkdirs; + } + /** * 递归删除文件及文件夹 * diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java index 3a21d9da6..ae71735f7 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java @@ -1484,7 +1484,7 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl excelfilelist = FileUnZip.readExcelFile(zipEntryName);