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