Java 如何处理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)并显示相应的消息(密码错误!)。请帮助,这是我的代码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)并显示相应的消息(密码错误!)。请帮助,这是我的
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提供该消息