Java 使用 org.apache.tools.zip.* 压缩文件源代码
2011-12-12 10:36
831 查看
Java 使用 org.apache.tools.zip.* 压缩/解压缩文件源代码
Java 使用 org.apache.tools.zip.* 压缩/解压缩文件的源代码。本源码支持中文路径和中文文件名;解决了压缩后有一个多余同名文件夹的 bug、压缩后用 7-zip 打开时根目录下的文件名前有“\”的 bug。
Java 使用 org.apache.tools.zip.* 压缩/解压缩文件的源代码。本源码支持中文路径和中文文件名;解决了压缩后有一个多余同名文件夹的 bug、压缩后用 7-zip 打开时根目录下的文件名前有“\”的 bug。
package com.defonds.cds.util; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; public class AntZipUtil { public static void zipFile(String zipFileName, String inputFileName) throws Exception { org.apache.tools.zip.ZipOutputStream out = new org.apache.tools.zip.ZipOutputStream( new FileOutputStream(zipFileName)); out.setEncoding("GBK"); File inputFile = new File(inputFileName); zipIt(out, inputFile, "", true); out.close(); } /* * 能支持中文的压缩 参数base 开始为"" first 开始为true */ public static void zipIt(org.apache.tools.zip.ZipOutputStream out, File f, String base, boolean first) throws Exception { if (f.isDirectory()) { File[] fl = f.listFiles(); if (first) { first = false; } else { base = base + "/"; } for (int i = 0; i < fl.length; i++) { zipIt(out, fl[i], base + fl[i].getName(), first); } } else { if (first) { base = f.getName(); } out.putNextEntry(new org.apache.tools.zip.ZipEntry(base)); FileInputStream in = new FileInputStream(f); int b; while ((b = in.read()) != -1) { out.write(b); } in.close(); } } public static void unZipFile(String unZipFileName, String unZipPath) throws Exception { org.apache.tools.zip.ZipFile zipFile = new org.apache.tools.zip.ZipFile( unZipFileName); unZipFileByOpache(zipFile, unZipPath); } /* * 解压文件 unZip为解压路径 */ public static void unZipFileByOpache(org.apache.tools.zip.ZipFile zipFile, String unZipRoot) throws Exception, IOException { java.util.Enumeration e = zipFile.getEntries(); org.apache.tools.zip.ZipEntry zipEntry; while (e.hasMoreElements()) { zipEntry = (org.apache.tools.zip.ZipEntry) e.nextElement(); InputStream fis = zipFile.getInputStream(zipEntry); if (zipEntry.isDirectory()) { } else { File file = new File(unZipRoot + File.separator + zipEntry.getName()); File parentFile = file.getParentFile(); parentFile.mkdirs(); FileOutputStream fos = new FileOutputStream(file); byte[] b = new byte[1024]; int len; while ((len = fis.read(b, 0, b.length)) != -1) { fos.write(b, 0, len); } fos.close(); fis.close(); } } } public static void main(String[] args) throws Exception { zipFile("d:/temp/folders.zip", "D:/temp/folders");//压缩入口 //unZipFile("d:/javaFile.zip","e:/");//解压入口 } }
相关文章推荐
- Java 使用 org.apache.tools.zip.* 压缩文件源代码
- java压缩与解压缩(2)使用org.apache.tools.zip
- 使用org.apache.tools.zip包来压缩解压缩文件。
- Java课程设计笔记-用org.apache.tools.zip中的类压缩/解压zip文件
- java 使用org.apache.tools.zip实现zip压缩和解压
- 使用org.apache.tools.zip实现zip压缩和解压
- 使用org.apache.tools.zip实现zip压缩和解压 http://wintys.blog.51cto.com/425414/90878
- 使用org.apache.tools.zip实现zip压缩和解压
- 使用org.apache.tools.zip实现zip压缩和解压
- 使用org.apache.tools.zip实现zip压缩和解压
- 使用org.apache.tools.zip实现zip压缩和解压
- java ant包中的org.apache.tools.zip实现压缩和解压缩实例详解
- android通过org.apache.tools.zip解压zip压缩文件,支持中文名
- 使用org.apache.tools.zip实现zip压缩和解压
- 使用org.apache.tools.zip实现zip压缩和解压
- 使用ant自带的org.apache.tools.zip包来压缩zip文件,重点:中文路径文件名问题
- 使用org.apache.tools.zip实现zip压缩和解压
- org.apache.tools.zip在Linux下压缩文件中文乱码问题解决
- 使用org.apache.tools.zip实现zip压缩和解压
- java使用Apache的ant压缩和解压文件(zip)