From f7733dc8aaca5590f7194ff4bd491e80d8c92ab3 Mon Sep 17 00:00:00 2001 From: whycxzp <glperry@163.com> Date: 星期三, 03 一月 2024 16:42:19 +0800 Subject: [PATCH] 解压rar --- src/main/java/com/whyc/util/FileUtil.java | 65 +++++++++++++++++--------------- 1 files changed, 34 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/whyc/util/FileUtil.java b/src/main/java/com/whyc/util/FileUtil.java index bb88145..54c8c83 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; @@ -164,7 +161,7 @@ * @param compressedFileUrl doc_file/xxx/xxx.zip 鎴栬�� rar * @return */ - public static List<String> decompress(String compressedFileUrl) throws ArchiveException, IOException, RarException { + 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); @@ -195,7 +192,7 @@ * @param compressedFileUrl doc_file/xxx/xxx.zip 鎴栬�� rar * @return */ - public static List<Object> decompressOne(String compressedFileUrl) throws IOException, ArchiveException, RarException { + public static List<Object> decompressOne(String compressedFileUrl) throws IOException, ArchiveException, InterruptedException { List<Object> resList = new LinkedList<>(); String projectDir = CommonUtil.getProjectDir() + File.separator; String fullFilePath; @@ -261,34 +258,40 @@ } } - - 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(); - + 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(); } + //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"); File file = new File("C:\\code\\web\\CadDrawManager\\target\\doc_file\\decompress\\doc_file@product@FBS-9600-GDPDX-XS1-DC220V-JH@standard@3@3++.rar"); -- Gitblit v1.9.1