java实现解压zip文件
注意:
1:使用jdk自带的zip的util的工具类实现解压zip文件,会出现中文文件名称乱码的问题,apache的zip的工具类改正了这个问题。
?
2:使用apache的zip的工具类,编码方式和项目的编码方式有关系,若你的项目使用的是utf-8的字符编码,则按照utf-8的方式解压缩,或你的工程的字符编码是gbk的项目编码,则按照字符集为gbk的项目编码来进行解压缩
,对于这个字符编码问题,我在写项目中亲自过.
?
3:若用apache的zip类库,来实现压缩或是解压缩,则还是出现文件名称乱码问题,这就需要手动设置字符编码啦。
?
程序代码如下:
zipFile = new ZipFile(unZipfileName, _GBK);for (Enumeration<?> entries = zipFile.getEntries(); entries.hasMoreElements();){ZipEntry entry = (ZipEntry) entries.nextElement();file = new File(targetfolder, entry.getName());if (entry.isDirectory()){file.mkdirs();} else{File parent = file.getParentFile();if (!parent.exists()){parent.mkdirs();}input = zipFile.getInputStream(entry);output = new FileOutputStream(file);while ((readBytes = input.read(buf)) > 0){output.write(buf, 0, readBytes);}output.close();input.close();}}zipFile.close();logger.info("解压文件成功...........");}catch (IOException ex){logger.error("解压文件["+unZipfileName+"]出错:" + ex.getMessage());}}public static void main(String[] args) throws Exception{// ZipFileUtil.doZip("D:\\unzipDir", "D:\\targetZip\\organ.zip");ZipFileUtil.unZip("D:\\ziptest\\ziptest.zip", "D:\\unzipDir");}}
?