java检测RAR4文件是否有密码与解压文件实现
此实现方式有多种
第一种junrar实现方式
导入Maven的pom方式
<dependency>
<groupId>com.github.junrar</groupId>
<artifactId>junrar</artifactId>
<version>7.4.0</version>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.10.11</version>
</dependency>
junrar代码实现方式
/**
* 判断RAR4判断方式是否检测密码方式
*
* @param rarFilePath
* @return
*/
public static boolean checkPwdRar(String rarFilePath) {
try {
// 创建RAR文件对象
File rarFile = new File(rarFilePath);
// 创建RAR4解决方式文件的Archive对象
com.github.junrar.Archive archive = new com.github.junrar.Archive(rarFile);
// 获取RAR文件中的所有文件头
com.github.junrar.rarfile.FileHeader fileHeader = archive.nextFileHeader();
// 检查文件头是否有密码
if (fileHeader.isEncrypted()) {
System.out.println("RAR文件带有密码!");
return true;
} else {
System.out.println("RAR文件没有密码。");
return false;
}
} catch (Exception ex) {
System.out.println("检测rar异常" + ex.getMessage());
return false;
}
}
第二种zip4j实现方式
导入jar
<dependency>
<groupId>net.lingala.zip4j</groupId>
<artifactId>zip4j</artifactId>
<version>2.11.5</version>
</dependency>
第二种zip4j代码实现方式
/**
* @param source 原始文件路径
* @param dest 解压路径
* @param password 解压文件密码(可以为空)
*/
public static boolean unZip(String source, String dest, String password) {
try {
File zipFile = new File(source);
// 首先创建ZipFile指向磁盘上的.zip文件
ZipFile zFile = new ZipFile(zipFile);
zFile.setCharset(Charset.forName(StringUtils.isEmpty(password) ? "GBK" : "utf-8"));
// 解压目录
File destDir = new File(dest);
// 目标目录不存在时,创建该文件夹
if (!destDir.exists()) {
destDir.mkdirs();
}
//判断是否是需要密码
if (zFile.isEncrypted()) {
// 设置密码
zFile.setPassword(password.toCharArray());
}
// 将文件抽出到解压目录(解压)
zFile.extractAll(dest);
LoggerHelper.info("正确密码:" + (StringUtils.isEmpty(password) ? "" : password));
zFile.close();
} catch (Exception e) {
//e.printStackTrace();
return false;
}
return true;
}
总结实现rar5解压和判断是否是rar5的加密
推荐看个人文章,目前的rar5文章检测是否rar5的有加密的相对较少,在我学习过程中找了蛮多都没办法满足个人需要,故做了学习记录,仅供参考学习,有更好希望支持修正,
拷贝过去可以直接使用
,谢谢。
Java实现解压RAR5算法压缩的rar文件与判断是否rar5加密文件