java解压zip压缩包含中文用到了ant.jar
public final class ZipUtil {
/**使用GBK编码可以避免压缩中文文件名乱码*/
private static final String CHINESE_CHARSET = "GBK";
/**文件读取缓冲区大小*/
private static final int CACHE_SIZE = 1024;
/**
* 解压压缩包 解压至当前文件夹
* @param zipFilePath 压缩文件路径
*/
public static void unZip(String zipFilePath) {
ZipFile zipFile = null;
File source = new File(zipFilePath);
String destDir = source.getParent()+"/";
System.out.println(destDir);
try {
BufferedInputStream bis = null;
FileOutputStream fos = null;
BufferedOutputStream bos = null;
zipFile = new ZipFile(zipFilePath, CHINESE_CHARSET);
Enumeration<ZipEntry> zipEntries = zipFile.getEntries();
File file, parentFile;
ZipEntry entry;
byte[] cache = new byte[CACHE_SIZE];
while (zipEntries.hasMoreElements()) {
entry = (ZipEntry) zipEntries.nextElement();
if (entry.isDirectory()) {
new File(destDir + entry.getName()).mkdirs();
continue;
}
bis = new BufferedInputStream(zipFile.getInputStream(entry));
file = new File(destDir + entry.getName());
parentFile = file.getParentFile();
if (parentFile != null && (!parentFile.exists())) {
parentFile.mkdirs();
}
fos = new FileOutputStream(file);
bos = new BufferedOutputStream(fos, CACHE_SIZE);
int readIndex = 0;
while ((readIndex = bis.read(cache, 0, CACHE_SIZE)) != -1) {
fos.write(cache, 0, readIndex);
}
bos.flush();
bos.close();
fos.close();
bis.close();
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
zipFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}