正确的 zip 压缩与解压代码

来源:互联网 发布:淘宝卖家怎么免费提现 编辑:程序博客网 时间:2024/05/16 12:27

网上流传的zip压缩与解压 的代码有很大的问题 虽然使用了ant进行压缩与解压,但是任务的流程还是用的java.util.zip 的方式写的,我在使用的过程中遇到了压缩的目录结构有误,甚至出现不同解压软件显示的目录结构不同的窘境。

下面给出使用org.apache.tools.ant.taskdefs.Zip;和org.apache.tools.ant.taskdefs.Expand 的压缩和解压过程。

import java.io.File;import org.apache.tools.ant.BuildException;import org.apache.tools.ant.Project;import org.apache.tools.ant.taskdefs.Expand;import org.apache.tools.ant.taskdefs.Zip;import org.apache.tools.ant.types.FileSet;public class Zipper {public final static String encoding = "GBK";// 压缩public static void zip(String srcPathname, String zipFilepath)throws BuildException, RuntimeException {File file = new File(srcPathname);if (!file.exists())throw new RuntimeException("source file or directory "+ srcPathname + " does not exist.");Project proj = new Project();FileSet fileSet = new FileSet();fileSet.setProject(proj);// 判断是目录还是文件if (file.isDirectory()) {fileSet.setDir(file);// ant中include/exclude规则在此都可以使用// 比如:// fileSet.setExcludes("**/*.txt");// fileSet.setIncludes("**/*.xls");} else {fileSet.setFile(file);}Zip zip = new Zip();zip.setProject(proj);zip.setDestFile(new File(zipFilepath));zip.addFileset(fileSet);zip.setEncoding(encoding);zip.execute();}// 解压缩public static void unzip(String zipFilepath, String destDir)throws BuildException, RuntimeException {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");expand.setEncoding(encoding);expand.setSrc(new File(zipFilepath));expand.setDest(new File(destDir));expand.execute();}public static void main(String []args){unzip("D:\\123.zip","D:\\123");zip("D:\\upload","D:\\upload.zip");}}


 

0 0
原创粉丝点击