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