From 177249c76aeea0b4bf8d8816d4994e3b445b45ce Mon Sep 17 00:00:00 2001 From: huanghongfa <huanghongfa123456> Date: 星期四, 02 九月 2021 10:39:34 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/zzj' into zzj --- springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/FileUtil.java | 85 +++++++++++++++++++++++++++++++++++++++++- 1 files changed, 82 insertions(+), 3 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/FileUtil.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/FileUtil.java index f0fe765..f7690d1 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/FileUtil.java +++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/FileUtil.java @@ -1,10 +1,10 @@ package com.panzhihua.common.utlis; -import java.io.File; -import java.io.InputStream; +import java.io.*; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; public class FileUtil { - public static InputStream getResourcesFileInputStream(String fileName) { return Thread.currentThread().getContextClassLoader().getResourceAsStream("" + fileName); @@ -33,4 +33,83 @@ public static File readUserHomeFile(String pathName) { return new File(System.getProperty("user.home") + File.separator + pathName); } + + /** + * 压缩文件 + * + * @param sourceFilePath 源文件路径 + * @param zipFilePath 压缩后文件存储路径 + * @param zipFilename 压缩文件名 + */ + public static void compressToZip(String sourceFilePath, String zipFilePath, String zipFilename) { + File sourceFile = new File(sourceFilePath); + File zipPath = new File(zipFilePath); + if (!zipPath.exists()) { + zipPath.mkdirs(); + } + File zipFile = new File(zipPath + File.separator + zipFilename); + try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile))) { + writeZip(sourceFile, "", zos); + //文件压缩完成后,删除被压缩文件 + boolean flag = deleteDir(sourceFile); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException(e.getMessage(), e.getCause()); + } + } + + /** + * 遍历所有文件,压缩 + * + * @param file 源文件目录 + * @param parentPath 压缩文件目录 + * @param zos 文件流 + */ + private static void writeZip(File file, String parentPath, ZipOutputStream zos) { + if (file.isDirectory()) { + //目录 + parentPath += file.getName() + File.separator; + File[] files = file.listFiles(); + for (File f : files) { + writeZip(f, parentPath, zos); + } + } else { + //文件 + try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file))) { + //指定zip文件夹 + ZipEntry zipEntry = new ZipEntry(parentPath + file.getName()); + zos.putNextEntry(zipEntry); + int len; + byte[] buffer = new byte[1024 * 10]; + while ((len = bis.read(buffer, 0, buffer.length)) != -1) { + zos.write(buffer, 0, len); + zos.flush(); + } + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException(e.getMessage(), e.getCause()); + } + } + + /** + * 删除文件夹 + * + * @param dir + * @return + */ + + } + private 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(); + } } -- Gitblit v1.7.1