【问题标题】:Zip4j Successful Extraction?Zip4j 成功解压?
【发布时间】:2014-11-24 04:56:43
【问题描述】:

我正在使用文档不佳的 Zip4j Java 库来创建一个对锁定的 zip 文件运行字典攻击的程序。当我运行我的程序时,它会从字典文件中提取值并通过 zip 运行它们以查看它们是否有效。如果有,则提取文件。让我烦恼的部分是,即使他正确地提取了它,它仍然会继续运行密码。我希望它在成功提取后停止。我该怎么做呢?如何创建一个触发器,当从 zip 中提取文件时程序停止尝试提取?这是我正在使用的循环:

    if(zipper.isEncrypted()){
            while(passwordCounter != passwordArray.size()){
                zipper.setPassword((String) passwordArray.get(passwordCounter));
                System.out.println("Testing password no." + passwordCounter + ", which is " + passwordArray.get(passwordCounter));
                passwordCounter = passwordCounter + 1;
                try {
                     zipper.extractAll(dest);

                } catch(ZipException ze) {
                    continue;
                }
            }
        } else
            zipper.extractAll(dest);

附: zip 中包含的文件并不总是与 zip 命名相同,因此您无法检查是否存在与 zip 命名相同的文件夹。此外,例如,如果用户希望 zip 转到他们的桌面,则不能说如果大小不为 0,则说明它已被提取。文件很可能在他们的桌面上。

【问题讨论】:

    标签: java loops arraylist zip4j


    【解决方案1】:

    zipper.extractAll(dest); 语句下放置break;,但在try-catch

    try {
        zipper.extractAll(dest);
        break;
    } catch(ZipException ze) {
        continue;
    }
    

    这会导致代码跳出当前循环

    【讨论】: