首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zip4j no error,extract all失败,即使会出现错误

Zip4j no error,extract all失败,即使会出现错误
EN

Stack Overflow用户
提问于 2019-11-13 23:31:18
回答 1查看 126关注 0票数 0

我使用zip4j解压由密码保护的包(AES-256)。我的问题不是代码不工作,而是当密码与.zip上的实际密码不匹配时,它不会抛出任何错误。

.zip的口令为123,对于zip4j,我将口令设置为123456789。所以他不能全部提取出来。我期待一个错误或任何消息,它不能提取。实际情况是,他没有提取它,但没有异常或错误消息,什么都没有。

你知道我该怎么检查提取是否成功吗?

代码语言:javascript
复制
 protected void unpackZip(String destinationPath, String archivePath) throws InterruptedException {
    int onChange = 0;

    try {
        ZipFile zipFile = new ZipFile( archivePath );

        zipFile.setRunInThread( true );

        if (zipFile.isEncrypted()) {
            zipFile.setPassword( "123456789");
        }

        zipFile.extractAll( destinationPath );

        // http://www.lingala.net/zip4j/forum/index.php?topic=68.0
        ProgressMonitor progressMonitor = zipFile.getProgressMonitor();

        while (progressMonitor.getState() == ProgressMonitor.STATE_BUSY) {
            // To get the percentage done
            if (onChange != progressMonitor.getPercentDone()) {
                onChange = progressMonitor.getPercentDone();
                sendWebStatusUiMessage( "Extracted : " + onChange + "% ", "update" );
            }
            try {
                Thread.sleep( 1000 );
            } catch (Exception e) {

            }


        }
    } catch (ZipException e) {
        e.printStackTrace();
    }

}
EN

回答 1

Stack Overflow用户

发布于 2020-05-23 00:14:05

这个答案有点晚了,但以防对任何人都有用:

在线程模式下运行zip4j时,必须在while循环之后检查任务执行和异常(如果出错)的状态。

代码语言:javascript
复制
while (progressMonitor.getState() == ProgressMonitor.STATE_BUSY) {
    // To get the percentage done
    if (onChange != progressMonitor.getPercentDone()) {
        onChange = progressMonitor.getPercentDone();
        sendWebStatusUiMessage( "Extracted : " + onChange + "% ", "update" );
    }
    try {
        Thread.sleep( 1000 );
    } catch (Exception e) {

    }
}

if (progressMonitor.getResult().equals(ProgressMonitor.Result.SUCCESS)) {
  System.out.println("Successfully added folder to zip");
} else if (progressMonitor.getResult().equals(ProgressMonitor.Result.ERROR)) {
  System.out.println("Error occurred. Error message: " + progressMonitor.getException().getMessage());
} else if (progressMonitor.getResult().equals(ProgressMonitor.Result.CANCELLED)) {
  System.out.println("Task cancelled");
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58840441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档