Java Zip4j无错误,即使出现错误,提取全部失败
我使用zip4j解压由密码(AES-256)保护的包。我的问题不是代码不工作,而是当密码与.zip上的实际密码不匹配时,它不会抛出任何错误 .zip的密码是123,对于zip4j,我设置了密码123456789。因此,他无法提取所有信息。我希望有一个错误或任何消息,它无法提取。实际情况是,他没有提取它,但没有异常或错误消息,什么都没有 你知道我如何检查提取是否成功吗Java Zip4j无错误,即使出现错误,提取全部失败,java,android,zip,aes,zip4j,Java,Android,Zip,Aes,Zip4j,我使用zip4j解压由密码(AES-256)保护的包。我的问题不是代码不工作,而是当密码与.zip上的实际密码不匹配时,它不会抛出任何错误 .zip的密码是123,对于zip4j,我设置了密码123456789。因此,他无法提取所有信息。我希望有一个错误或任何消息,它无法提取。实际情况是,他没有提取它,但没有异常或错误消息,什么都没有 你知道我如何检查提取是否成功吗 protected void unpackZip(String destinationPath, String archiveP
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();
}
}
这个答案有点晚了,但以防万一,它可能对任何人都有用: 在线程模式下运行zip4j时,在while循环之后,必须检查任务执行和异常(如果出错)的状态
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");
}