From f92783da5430037bf80cf28a5cf7091cdecefbb7 Mon Sep 17 00:00:00 2001
From: whycxzp <glperry@163.com>
Date: 星期五, 09 五月 2025 09:23:51 +0800
Subject: [PATCH] 追加用户邮件备注

---
 src/main/java/com/whyc/util/FileUtil.java |  168 +++++++++++++++++++++++++++++---------------------------
 1 files changed, 87 insertions(+), 81 deletions(-)

diff --git a/src/main/java/com/whyc/util/FileUtil.java b/src/main/java/com/whyc/util/FileUtil.java
index 1f09e28..fc21569 100644
--- a/src/main/java/com/whyc/util/FileUtil.java
+++ b/src/main/java/com/whyc/util/FileUtil.java
@@ -1,8 +1,5 @@
 package com.whyc.util;
 
-import com.github.junrar.Archive;
-import com.github.junrar.exception.RarException;
-import com.github.junrar.rarfile.FileHeader;
 import org.apache.commons.compress.archivers.ArchiveEntry;
 import org.apache.commons.compress.archivers.ArchiveException;
 import org.apache.commons.compress.archivers.ArchiveInputStream;
@@ -12,10 +9,13 @@
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.net.URLEncoder;
+import java.nio.file.Files;
+import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
 
 public class FileUtil {
+
 
     public static List<String> getStaticFilePath(File file, List<String> list){
 
@@ -164,22 +164,25 @@
      * @param compressedFileUrl doc_file/xxx/xxx.zip 鎴栬�� rar
      * @return
      */
-    public static List<String> decompress(String compressedFileUrl){
+    public static List<String> decompress(String compressedFileUrl) throws ArchiveException, IOException, InterruptedException {
         List<Object> resList = decompressOne(compressedFileUrl);
         File outputFolderFile = (File) resList.get(0);
         List<String>  fileList = (List<String>) resList.get(1);
         boolean existCompressedFile = false;
         int checkDecompress = 0;
+        //閬嶅巻鏂囦欢鍒楄〃锛屽垽鏂槸鍚﹀瓨鍦ㄥ帇缂╂枃浠�
         for(String tempFileName:fileList){
             if(tempFileName.endsWith("zip") || tempFileName.endsWith("rar")){
+                //瀛樺湪鍘嬬缉鏂囦欢,瑙e帇涓�娆�
                 decompressOne(tempFileName);
                 File file = new File(tempFileName);
-                boolean b = file.canExecute();
-                System.out.println(b);
-                file.delete();
+                //瑙i櫎鏂囦欢鍗犵敤骞跺垹闄ゆ枃浠�
+                //boolean delete = file.delete();
+                Files.delete(file.toPath());
                 existCompressedFile = true;
             }
         }
+        //濡傛灉瀛樺湪鍘嬬缉鏂囦欢骞跺凡瑙e帇,鍒欓渶瑕佹鏌ヤ竴娆℃槸鍚﹁繕鏈夊帇缂╂枃浠�
         if(existCompressedFile){
             checkDecompress ++;
         }
@@ -197,7 +200,7 @@
      * @param compressedFileUrl doc_file/xxx/xxx.zip 鎴栬�� rar
      * @return
      */
-    public static List<Object> decompressOne(String compressedFileUrl){
+    public static List<Object> decompressOne(String compressedFileUrl) throws IOException, ArchiveException, InterruptedException {
         List<Object> resList = new LinkedList<>();
         String projectDir = CommonUtil.getProjectDir() + File.separator;
         String fullFilePath;
@@ -233,84 +236,87 @@
         return resList;
     }
 
-    public static String decompressT(File file){
-        String fileName = file.getName();
-        String outputFolder = "C:\\Users\\29550\\Desktop\\decompress" + File.separator + fileName;
-        File outputFolderFile = new File(outputFolder);
-        if(!outputFolderFile.exists()){
-            outputFolderFile.mkdirs();
-        }
-        if(fileName.endsWith("zip")){
-            decompressZip(file, outputFolder);
-        }else { //rar
-            decompressRar(file, outputFolder);
-        }
-
-        return null;
-    }
-    private static void decompressZip(File file, String outputFolder) {
-        try (ArchiveInputStream ais = new ArchiveStreamFactory().createArchiveInputStream("zip", new FileInputStream(file))) {
-            ArchiveEntry entry;
-            while ((entry = ais.getNextEntry()) != null) {
-                if (!ais.canReadEntryData(entry) || entry.isDirectory()) {
-                    continue;
-                }
-                byte[] buffer = new byte[4096];
-                int bytesRead;
-                String entryName = entry.getName();
-                //if(entryName.contains(File.separator)){
-                if(entryName.contains("/")){
-                    String entryNameDir = entryName.substring(0, entryName.lastIndexOf("/"));
-                    String entryDirStr = outputFolder + File.separator + entryNameDir;
-                    File entryDir = new File(entryDirStr);
-                    if(!entryDir.exists()){
-                        entryDir.mkdirs();
-                    }
-                }
-
-                OutputStream outputStream = new FileOutputStream(new File(outputFolder + File.separator + entryName));
-
-                while ((bytesRead = ais.read(buffer)) > -1) {
-                    outputStream.write(buffer, 0, bytesRead);
-                }
-
-                outputStream.close();
+    private static void decompressZip(File file, String outputFolder) throws IOException, ArchiveException {
+        ArchiveInputStream ais = new ArchiveStreamFactory("GBK").createArchiveInputStream("zip", new FileInputStream(file));
+        ArchiveEntry entry;
+        while ((entry = ais.getNextEntry()) != null) {
+            if (!ais.canReadEntryData(entry) || entry.isDirectory()) {
+                continue;
             }
-        } catch (IOException | ArchiveException e) {
-            e.printStackTrace();
-        }
-    }
-
-    private static void decompressRar(File file, String outputFolder) {
-        try {
-
-            Archive archive = new Archive(file);
-            FileHeader fileHeader = archive.nextFileHeader();
-            if (fileHeader != null) {
-                while (fileHeader != null) {
-                    if (fileHeader.isDirectory()) {
-                        fileHeader = archive.nextFileHeader();
-                        continue;
-                    }
-                    String tempFilePath = fileHeader.getFileName();
-                    File out = new File(outputFolder + File.separator + tempFilePath);
-                    if (!out.exists()) {
-                        if (!out.getParentFile().exists()) {
-                            out.getParentFile().mkdirs();
-                        }
-                        out.createNewFile();
-                    }
-                    FileOutputStream os = new FileOutputStream(out);
-                    archive.extractFile(fileHeader, os);
-                    os.close();
-                    fileHeader = archive.nextFileHeader();
+            byte[] buffer = new byte[4096];
+            int bytesRead;
+            String entryName = entry.getName();
+            //if(entryName.contains(File.separator)){
+            if(entryName.contains("/")){
+                String entryNameDir = entryName.substring(0, entryName.lastIndexOf("/"));
+                String entryDirStr = outputFolder + File.separator + entryNameDir;
+                File entryDir = new File(entryDirStr);
+                if(!entryDir.exists()){
+                    entryDir.mkdirs();
                 }
             }
-            archive.close();
-        } catch (IOException | RarException e) {
-            e.printStackTrace();
+
+            OutputStream outputStream = new FileOutputStream(new File(outputFolder + File.separator + entryName));
+
+            while ((bytesRead = ais.read(buffer)) > -1) {
+                outputStream.write(buffer, 0, bytesRead);
+            }
+
+            //鍏虫祦
+            outputStream.close();
         }
+        //鍏虫祦
+        ais.close();
+
     }
+    private static void decompressRar(File file, String outputFolder) throws IOException, InterruptedException {
+        String winrarPath = "C:\\Program Files\\WinRAR\\WinRAR.exe";
+        String cmd = winrarPath + " X " + file + " " + outputFolder;
+        Process proc = Runtime.getRuntime().exec(cmd);
+        proc.waitFor();
+    }
+
+    //璇诲彇鏂囦欢澶逛笅鐨勬墍鏈夋枃浠讹紙涓嶈鍙栨枃浠跺す鍐呯殑鏂囦欢锛�
+    public static List getFileNameWithOutDirectory(String filePath) {
+        File folder = new File(filePath); // 鏂囦欢澶硅矾寰�
+        List nameList=new ArrayList();
+        File[] listOfFiles = folder.listFiles();
+        if (listOfFiles != null) {
+            for (File file : listOfFiles) {
+                if (file.isFile()) {
+                    nameList.add(file.getName());
+                }
+            }
+        }
+        return nameList;
+    }
+
+    //private static void decompressRar(File file, String outputFolder) throws IOException, RarException {
+    //    Archive archive = new Archive(file);
+    //    FileHeader fileHeader = archive.nextFileHeader();
+    //    if (fileHeader != null) {
+    //        while (fileHeader != null) {
+    //            if (fileHeader.isDirectory()) {
+    //                fileHeader = archive.nextFileHeader();
+    //                continue;
+    //            }
+    //            String tempFilePath = fileHeader.getFileName();
+    //            File out = new File(outputFolder + File.separator + tempFilePath);
+    //            if (!out.exists()) {
+    //                if (!out.getParentFile().exists()) {
+    //                    out.getParentFile().mkdirs();
+    //                }
+    //                out.createNewFile();
+    //            }
+    //            FileOutputStream os = new FileOutputStream(out);
+    //            archive.extractFile(fileHeader, os);
+    //            os.close();
+    //            fileHeader = archive.nextFileHeader();
+    //        }
+    //    }
+    //    archive.close();
+    //
+    //}
 
     public static void main(String[] args) {
         //File file = new File("C:\\Users\\29550\\Desktop\\AppScan10.rar");

--
Gitblit v1.9.1