正确 zip 压缩和解压码

网上流传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");

	}

}




 

版权声明:本文博客原创文章。博客,未经同意,不得转载。

你可能感兴趣的:(zip)