java 解压zip java.lang.IllegalArgumentException: MALFORMED 错误
2017-03-02 17:00
435 查看
zip压缩包在解压过程中,遇到了错误,提示如下
查阅网上的资料,有一个说是编码的问题,看看老外怎么说,参考了一下,确实是编码的问题。附上我的部分解压缩代码
public static void unzip(String zipFilePath, String targetPath)
throws IOException {
OutputStream os = null;
InputStream is = null;
ZipFile zipFile = null;
try {
zipFile = new ZipFile(zipFilePath,Charset.forName("GBK"));
String directoryPath = "";
if (null == targetPath || "".equals(targetPath)) {
directoryPath = zipFilePath.substring(0, zipFilePath
.lastIndexOf("."));
} else {
directoryPath = targetPath;
}
Enumeration<?> entryEnum = zipFile.entries();
if (null != entryEnum) {
ZipEntry zipEntry = null;
while (entryEnum.hasMoreElements()) {
zipEntry = (ZipEntry) entryEnum.nextElement();
if (zipEntry.getSize() > 0) {
// 文件
File targetFile = FileUtil.buildFile(directoryPath
+ File.separator + zipEntry.getName(), false);
os = new BufferedOutputStream(new FileOutputStream(targetFile));
is = zipFile.getInputStream(zipEntry);
byte[] buffer = new byte[4096];
int readLen = 0;
while ((readLen = is.read(buffer, 0, 4096)) >= 0) {
os.write(buffer, 0, readLen);
os.flush();
}
is.close();
os.close();
}
if (zipEntry.isDirectory()) {
String pathTemp = directoryPath + File.separator
+ zipEntry.getName();
File file = new File(pathTemp);
file.mkdirs();
System.out.println(pathTemp);
// continue;
}
}
}
} catch (IOException ex) {
throw ex;
} finally {
if(null != zipFile){
zipFile.close();
zipFile = null;
}
if (null != is) {
is.close();
}
if (null != os) {
os.close();
}
}
}
声明:
java.lang.IllegalArgumentException: MALFORMED at java.util.zip.ZipCoder.toString(Unknown Source) at java.util.zip.ZipInputStream.readLOC(Unknown Source) at java.util.zip.ZipInputStream.getNextEntry(Unknown Source) at com.yc.utils.TestZip.extZipFileList(TestZip.java:40) at com.yc.utils.TestZip.main(TestZip.java:21)
查阅网上的资料,有一个说是编码的问题,看看老外怎么说,参考了一下,确实是编码的问题。附上我的部分解压缩代码
public static void unzip(String zipFilePath, String targetPath)
throws IOException {
OutputStream os = null;
InputStream is = null;
ZipFile zipFile = null;
try {
zipFile = new ZipFile(zipFilePath,Charset.forName("GBK"));
String directoryPath = "";
if (null == targetPath || "".equals(targetPath)) {
directoryPath = zipFilePath.substring(0, zipFilePath
.lastIndexOf("."));
} else {
directoryPath = targetPath;
}
Enumeration<?> entryEnum = zipFile.entries();
if (null != entryEnum) {
ZipEntry zipEntry = null;
while (entryEnum.hasMoreElements()) {
zipEntry = (ZipEntry) entryEnum.nextElement();
if (zipEntry.getSize() > 0) {
// 文件
File targetFile = FileUtil.buildFile(directoryPath
+ File.separator + zipEntry.getName(), false);
os = new BufferedOutputStream(new FileOutputStream(targetFile));
is = zipFile.getInputStream(zipEntry);
byte[] buffer = new byte[4096];
int readLen = 0;
while ((readLen = is.read(buffer, 0, 4096)) >= 0) {
os.write(buffer, 0, readLen);
os.flush();
}
is.close();
os.close();
}
if (zipEntry.isDirectory()) {
String pathTemp = directoryPath + File.separator
+ zipEntry.getName();
File file = new File(pathTemp);
file.mkdirs();
System.out.println(pathTemp);
// continue;
}
}
}
} catch (IOException ex) {
throw ex;
} finally {
if(null != zipFile){
zipFile.close();
zipFile = null;
}
if (null != is) {
is.close();
}
if (null != os) {
os.close();
}
}
}
声明:
zipFile = new ZipFile(zipFilePath,Charset.forName("GBK"));不是所有压缩包的编码都是GBK,针对不同情况需要特殊处理。
相关文章推荐
- java 解压zip java.lang.IllegalArgumentException: MALFORMED 错误
- java 解压zip java.lang.IllegalArgumentException: MALFORMED 错误
- 压缩/解压 zip 时遇到 java.lang.IllegalArgumentException: MALFORMED
- 压缩/解压 zip 时遇到 java.lang.IllegalArgumentException: MALFORMED
- 关于java.lang.IllegalArgumentException: View not attached to window manager 错误的分析
- Android 错误信息java.lang.IllegalArgumentException: Illegal character in query at index xxx:
- Tomcat的错误 之 java.lang.IllegalArgumentException: Document base * does not exist
- 错误提示:java.lang.Exception: java.lang.IllegalArgumentException
- struts1.x 错误之 java.lang.IllegalArgumentException: No bean specified
- java.lang.IllegalArgumentException: Malformed \uxxxx encoding异常解析
- 错误:java.lang.illegalArgumentException:No view id found for fragment
- java.lang.IllegalArgumentException: argument type mismatch 错误
- 关于spring java.lang.IllegalArgumentException: Name for argument type [java.lang.String] 的错误
- Android错误总结-E/AndroidRuntime(23439): Caused by: java.lang.IllegalArgumentException: column 'id' d
- jbpm部署出现java.lang.IllegalArgumentException: MALFORMED
- Caused by: java.lang.IllegalArgumentException: Javassist library is missing in classpath! ..错误解决
- 错误:java.lang.IllegalArgumentException: node to traverse cannot be null!
- 错误 java.lang.IllegalArgumentException: parameter must be a descendant of this view 的解决方案
- 错误:java.lang.IllegalArgumentException: attempt to create create event with null entity
- java.lang.IllegalArgumentException: argument type mismatch 错误