java zip解压缩 博客分类: Java zip解压缩compressZipArchiveEntryjava解压缩zip
程序员文章站
2024-03-24 16:49:46
...
java 中如何进行zip包的解压缩呢?
有两种方式:
(1)使用jdk 自带的zip工具
(2)使用apache旗下的commons-compress
我下面要讲解的zip解压缩助手使用的是apache旗下的commons-compress.
工具运行界面如下:
核心代码:
解压:
/*** * 解压zip * * @param zipFile * @param decompressLoc * :解压之后的文件所在目录 * @throws ArchiveException * @throws IOException */ public static boolean deCompressRecursion(String zipFile, File decompressLoc, String charSet) throws ArchiveException, IOException { FileInputStream fin = new FileInputStream(zipFile); ArchiveInputStream archIns = new ArchiveStreamFactory() .createArchiveInputStream(ArchiveStreamFactory.ZIP, fin); ZipArchiveInputStream zipIn = (ZipArchiveInputStream) archIns; boolean isSuccess = deCompressRecursion(zipIn, decompressLoc, charSet); zipIn.close(); return isSuccess; } /*** * 递归解压缩. * * @param zipIn * @param decompressLoc * @return * @throws IOException */ private static boolean deCompressRecursion(ZipArchiveInputStream zipIn, File decompressLoc, String charset) throws IOException { ZipArchiveEntry zipEntry; if (ValueWidget.isNullOrEmpty(charset)) { charset = SystemHWUtil.CHARSET_UTF; } while (!ValueWidget.isNullOrEmpty(zipEntry = zipIn.getNextZipEntry())) { byte[] rawName = zipEntry.getRawName(); String fileName = new String(rawName, charset); // System.out.println(fileName); if (zipEntry.isDirectory()) {// 是目录 File newFolder = new File(decompressLoc, fileName);// 若子目录不存在,则创建之 System.out.println(newFolder.getAbsolutePath()); if (!newFolder.exists()) { newFolder.mkdir(); } // deCompressRecursion(zipIn, decompressLoc,charset); } else {// 是普通文件 File singFile = new File(decompressLoc, fileName); System.out.println(singFile.getAbsolutePath()); if (singFile.exists()) {// 若解压后的文件已经存在,则直接退出 GUIUtil23.warningDialog("File \"" + singFile.getAbsolutePath() + "\" does exist."); return false; } /** * 以下四行代码是后来添加的,为了解决父目录不存在的问题 */ File fatherFolder = singFile.getParentFile(); if (!fatherFolder.exists()) { fatherFolder.mkdirs(); } FileUtils.writeIn2Output(zipIn, new FileOutputStream(singFile), true, false); } } return true; }
压缩:
/*** * 压缩文件. * * @param zipFile * @param folderPaths * @return * @throws ArchiveException * @throws IOException */ public static boolean compressZipRecursion(String zipFile, String folderPaths) throws ArchiveException, IOException { FileOutputStream fou = new FileOutputStream(zipFile); ArchiveOutputStream archOuts = new ArchiveStreamFactory() .createArchiveOutputStream(ArchiveStreamFactory.ZIP, fou); if (archOuts instanceof ZipArchiveOutputStream) { ZipArchiveOutputStream zipOut = (ZipArchiveOutputStream) archOuts; List<ZipArchiveEntry> zipEntrys = getZipFileListRecursion(new File( folderPaths), null); for (int i = 0; i < zipEntrys.size(); i++) { ZipArchiveEntry zipEntry2 = zipEntrys.get(i); zipOut.putArchiveEntry(zipEntry2); File file = new File(folderPaths, zipEntry2.getName()); if (!file.exists()) { return false; } if (!file.isDirectory()) { FileInputStream fin = new FileInputStream(file); // 不要关闭zipOut,关闭之前要执行closeArchiveEntry() FileUtils.writeIn2Output(fin, zipOut, false, true); } } closeZip(zipOut, true); } return true; } /*** * 压缩之后的收尾操作. * * @param zipOut * @throws IOException */ private static void closeZip(ZipArchiveOutputStream zipOut, boolean iscloseArchiveEntry) throws IOException { if (iscloseArchiveEntry) { zipOut.closeArchiveEntry();// it is necessary } zipOut.flush(); zipOut.finish(); zipOut.close(); }
上述代码见类:com.common.util.CompressZipUtil
项目名:zip_mgmt
项目源代码见附件:zip_mgmt.zip
项目使用maven 构建
IDE:eclipse
依赖的jar包:(1)io0007-find_progess-0.0.8-SNAPSHOT.jar
(2)is_chinese
学习笔记见附件java zip压缩.zip
参考:http://m.blog.csdn.net/blog/buyaore_wo/7047343
http://www.cnblogs.com/un4sure/archive/2011/09/27/2193298.html,
http://hw1287789687.iteye.com/blog/1976309
推荐阅读
-
java以zip格式实现压缩解压,有界面 博客分类: javazip界面压缩解压 javazip界面压缩解压
-
java压缩zip文件乱码问题 博客分类: Java JavaZip压缩文件中文乱码乱码
-
java zip解压缩 博客分类: Java zip解压缩compressZipArchiveEntryjava解压缩zip
-
java实现zip与unzip 博客分类: JAVA JAVAzip
-
gzip unzip java 压缩 解压缩 bytes 博客分类: java gzipunzip压缩解压缩bytes
-
Java实现Zip压缩,解压缩(二) 博客分类: Java codepaper javazipunzip
-
zip版tomcat(6,7)不能注册成windows服务或者注册后不能启动的问题解决 博客分类: Java其他分类微服务数据库
-
java .zip源代码查看 博客分类: Java java.zip源代码查看
-
Java动态zip下载,IE8无法打开的问题(不可预料的压缩文件末端) 博客分类: HTTP zipie8contenttype
-
java工具类解压缩zip和rar