工作中遇到的问题:
压缩文件目录中存在中文时会报 java.lang.IllegalArgumentException: MALFORMED错误,这是因为
- java.util.zip下的格式转换有问题,jdk中的zip存在字符编码的问题。
可以使用apache提供的tools.ant包解压,解决解压中文目录出错问题。
代码如下:
//解压
//zipFilepath:源文件,destDir:解压目录
public static void unzip2(String zipFilepath, String destDir)
{
if (!new File(zipFilepath).exists())
{
throw new RuntimeException("zip file " + zipFilepath + " does not exist.");
}
Project proj = new Project();
Expand expand = new Expand();
expand.setProject(proj);
expand.setTaskType("unzip");
expand.setTaskName("unzip");
//设置字符集为gbk支持中文
expand.setEncoding("GBK");
expand.setSrc(new File(zipFilepath));
expand.setDest(new File(destDir));
expand.execute();
}