我是靠谱客的博主 从容钻石,最近开发中收集的这篇文章主要介绍com.github.junrar.exception.RarException: badRarArchive---rar5.0版解决方案,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
警告: exception in archive constructor maybe file is encrypted or currupt
com.github.junrar.exception.RarException: badRarArchive
出现这种问题,在网上查找资料,发现,rar解压分5.0之前和5.0之后的版本,5.0之前的版本,可以通过代码实现解压,WinRAR5之后,在rar格式的基础上,推出了另一种rar,叫RAR5,而java-unrar解析不了这种格式,目前官方也没有实现代码解压
解决方案:调用系统的rar解压工具解压
window 版本解压,可以使用WinRAR.exe文件解压
当然要先安装WinRAR软件,然后把WinRAR.exe拷贝到项目中,或者直接写WinRAR安装路径
/**
* 采用命令行方式解压文件
* @param zipFile 压缩文件
* @param destDir 解压结果路径
* @param cmdPath WinRAR.exe的路径,也可以在代码中写死
* @return
*/
public static boolean realExtract(File zipFile, String destDir,String cmdPath) {
// 解决路径中存在/..格式的路径问题
destDir = new File(destDir).getAbsoluteFile().getAbsolutePath();
while(destDir.contains("..")) {
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 (!zipFile.exists()) {
return false;
}
// 开始调用命令行解压,参数-o+是表示覆盖的意思
cmdPath = "E:\workspace\operation-uprr-manage\src\main\resources\cmd\WinRAR.exe";
String cmd = cmdPath + " X -o+ " + zipFile + " " + destDir;
System.out.println(cmd);
try {
Process proc = Runtime.getRuntime().exec(cmd);
if (proc.waitFor() != 0) {
if (proc.exitValue() == 0) {
bool = false;
}
} else {
bool = true;
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("解压" + (bool ? "成功" : "失败"));
return bool;
}
Linux版本解压,先安装unrar,然后调用unrar命令解压
1.安装unrar
wget https://www.rarlab.com/rar/rarlinux-x64-5.7.0.tar.gz 下载unrar包
tar -zxf rarlinux-x64-5.7.0.tar.gz
cd rar
make
make install
安装完成unrar,安装默认路径是/usr/local/bin
里面有rar 和 unrar可执行文件
/usr/local/bin/unrar,路径写这个路径即可,调用上述方法
最后
以上就是从容钻石为你收集整理的com.github.junrar.exception.RarException: badRarArchive---rar5.0版解决方案的全部内容,希望文章能够帮你解决com.github.junrar.exception.RarException: badRarArchive---rar5.0版解决方案所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复