java检测RAR4文件是否有密码与解压文件实现

2023-08-28  本文已影响0人  爱学习的蹭蹭

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加密文件

上一篇 下一篇

猜你喜欢

热点阅读