private static void extractRar(String rarPath, String destDir) throws IOException, RarException {File dstDiretory = new File(destDir);if (!ists()) {dstDiretory.mkdirs();}File rarFile = new File(rarPath);Archive archive = new Archive(new FileInputStream(rarFile));List<FileHeader> fileHeaders = FileHeaders();for (FileHeader fileHeader : fileHeaders) {if (fileHeader.isDirectory()) {String fileName = FileNameW();if (!existZH(fileName)) {fileName = FileNameString();}File dir = new File(destDir + File.separator + fileName);if (!ists()) {dir.mkdirs();}} else {String fileName = FileNameW().trim();if (!existZH(fileName)) {fileName = FileNameString().trim();}File file = new File(destDir + File.separator + fileName);try {if (!ists()) {if (!ParentFile().exists()) {ParentFile().mkdirs();}ateNewFile();}FileOutputStream os = new FileOutputStream(file);actFile(fileHeader, os);os.close();} catch (Exception ex) {throw ex;}}}archive.close();}//判断文件名有没有正则表达式public static boolean existZH(String str) {String regEx = "[\u4e00-\u9fa5]";Pattern p = Patternpile(regEx);Matcher m = p.matcher(str);while (m.find()) {return true;}return false;}
<groupId>com.github.junrar</groupId>
<artifactId>junrar</artifactId>
/*** 采用命令行方式解压文件** @param rarPath 压缩文件路径* @param destDir 解压结果路径* @param 的路径,也可以在代码中写死* @return*/public static boolean realExtract(String rarPath, String destDir, String cmdPath) {File rarFile = new File(rarPath);// 解决路径中存在/..格式的路径问题destDir = new File(destDir).getAbsoluteFile().getAbsolutePath();while (ains("..")) {String[] sepList = destDir.split("\\");destDir = "";for (int i = 0; i < sepList.length; i++) {if (!"..".equals(sepList[i]) && i < sepList.length - 1 && "..".equals(sepList[i + 1])) {i++;} else {destDir += sepList[i] + File.separator;}}}boolean bool = false;if (!ists()) {return false;}// 开始调用命令行解压,参数-o+是表示覆盖的意思String cmd = cmdPath + " X -o+ " + rarFile + " " + destDir;System.out.println(cmd);try {Process proc = Runtime().exec(cmd);if (proc.waitFor() != 0) {if (itValue() == 0) {bool = false;}} else {bool = true;}} catch (Exception e) {e.printStackTrace();}rarFile.delete();return bool;}
本文发布于:2024-02-01 04:23:40,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170673262133829.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |