我正在尝试使用zip4j库为Android解压缩受密码保护的zip文件。但它给出了不支持的压缩类型异常。我搜索了很多,但找不到任何理由或解决方案。
所以我的问题是:
如何解决这个问题?我应该使用任何其他图书馆吗?
try {
File src = new File("/sdcard/" + filename);
ZipFile zipFile = new ZipFile(src);
if (zipFile.isEncrypted()) {
zipFile.setPassword("mypassword");
}
File destFile=new File ("/sdcard/tests_images_Xdata");
if(!destFile.isDirectory()){
destFile.mkdir();
String dest = new String("/sdcard/tests_images_Xdata");
zipFile.extractAll(dest);
}
}
catch (ZipException e) {
e.printStackTrace();
}
答案 0 :(得分:0)
首先,我认为您的代码中存在一些错误,
if(!destFile.isDirectory()){
仅当destFile是文件时才为true,其次必须使用后缀“zip”设置压缩文件,这意味着您的变量文件名必须包含“.zip”。
答案 1 :(得分:0)
Zip4j支持Store(无压缩)或Deflate压缩算法。最有可能的是,使用Zip4j不支持的其他压缩算法压缩了您遇到此问题的zip文件。
要查看zip文件中文件的压缩类型,请在7-Zip中打开zip文件 - >右键单击文件 - >属性。包含“Method”的字段显示使用的压缩类型。
要使用带zip4j的zip文件,您必须确保使用deflate或Store(无压缩)压缩它