Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何处理ZipException(文件的密码错误:Demo.zip)并显示适当的消息_Java_Zip4j - Fatal编程技术网

Java 如何处理ZipException(文件的密码错误:Demo.zip)并显示适当的消息

Java 如何处理ZipException(文件的密码错误:Demo.zip)并显示适当的消息,java,zip4j,Java,Zip4j,由于我是Java新手,我创建了一个解压受密码保护的zip文件的方法,我使用zip4j库解压zip文件,密码正确时代码工作正常,但密码错误时如何处理ZipException(net.lingala.zip4j.exception.ZipException:net.lingala.zip4j.exception.ZipException:net.lingala.zip4j.exception.ZipException:文件的密码错误:Demo.zip)并显示相应的消息(密码错误!)。请帮助,这是我的

由于我是Java新手,我创建了一个解压受密码保护的zip文件的方法,我使用zip4j库解压zip文件,密码正确时代码工作正常,但密码错误时如何处理ZipException(net.lingala.zip4j.exception.ZipException:net.lingala.zip4j.exception.ZipException:net.lingala.zip4j.exception.ZipException:文件的密码错误:Demo.zip)并显示相应的消息(密码错误!)。请帮助,这是我的代码

import net.lingala.zip4j.core.ZipFile;
导入net.lingala.zip4j.exception.zipeexception;
导入net.lingala.zip4j.model.zip参数;
导入net.lingala.zip4j.util.Zip4jConstants;
公共类UnunzipDemo{
public void unzipFilesWithPassword(字符串sourceZipFilePath、字符串extractedZipFilePath、字符串密码){
试一试{
ZipFile ZipFile=新ZipFile(sourceZipFilePath);
if(zipFile.isEncrypted()){
zipFile.setPassword(密码);
}
zipFile.extractAll(extractedZipFilePath);
系统输出打印项次(“完成”);
}
捕获(ZipException e){
e、 printStackTrace();
}
}
公共静态void main(字符串[]args){
字符串sourceZipFilePath=“E:/MyFiles/Files/Zip/Demo.Zip”;
String extractedZipFilePath=“E:/MyFiles/Files/Unzip/”;
String password=“JOEL”//正确的密码
UnunzipDemo=new unununzipdemo();
unzipDemo.unzipFilesWithPassword(sourceZipFilePath,extractedZipFilePath,password);
}

}
也许您可以从控制台读取密码。 例如:

private static String password=“123”;
公共静态void main(字符串[]args){
//从控制台读取输入密码
//如果你有用户界面,也许你可以通过某种方式阅读它。
扫描仪sc=新的扫描仪(System.in);
字符串inputPassword=sc.next();
while(true){
//做点什么。。。
试一试{
解压(输入密码);
打破
}捕获(例外e){
inputPassword=sc.next();
}
}
}
私有静态无效解压缩(字符串输入密码){
if(输入密码.等于(密码)){
//解压
}否则{
//只是演示一下。在你的情况下,这是ZipException
抛出新的IllegalArgumentException(“错误密码”);
}
}

您还可以检查错误代码

public void unzipFilesWithPassword(String sourceZipFilePath,String extractedZipFilePath,String password){
    try {
        ZipFile zipFile = new ZipFile(sourceZipFilePath);
        if (zipFile.isEncrypted()) {
            zipFile.setPassword(password);
        }
        zipFile.extractAll(extractedZipFilePath);
        System.out.println("Done");
    }
    catch (ZipException e) {
        if (e.getCode == ZipExceptionConstants.WRONG_PASSWORD) {
           // Handle wrong password scenario
           System.out.println("Wrong password");
        } else {
           //Handle other exception scenario - printing out error messages?
        }
    }

为什么不用正确的错误消息替换
e.printStackTrace();
?如果我用正确的消息替换这些行,它将始终为所有类型的ZipException提供该消息