java压缩----使用ANT JDK压缩---解决中文问题

import java.io.File;
import java.io.IOException;
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;

/**
 * @author 压缩指定的目录以及解压指定的压缩文件(仅限ZIP格式).
 */
public class ZipUtils {
	public final static String encoding = "GBK";   

	/**
	 * 1.可以压缩目录(支持多级)<br>
	 * 2.可以压缩文件<br>
	 * 3.如果压缩文件的路径或父路径不存在, 将会自动创建<br>
	 * 
	 * @param src
	 *            将要进行压缩的目录
	 * @param zip
	 *            最终生成的压缩文件的路径
	 */
	public static void zip(File src, File dest) throws IOException {
		Project prj = new Project();
		Zip zip = new Zip();
		zip.setProject(prj);
		zip.setDestFile(dest);
		FileSet fileSet = new FileSet();
		fileSet.setProject(prj);
		if (src.isFile()) {
			fileSet.setFile(src);
		} else {
			fileSet.setDir(src);
		}
		zip.addFileset(fileSet);
		zip.execute();
	}

	/**
	 * 将指定的压缩文件解压到指定的目标目录下. 如果指定的目标目录不存在或其父路径不存在, 将会自动创建.
	 * 
	 * @param zip
	 *            将会解压的压缩文件
	 * @param dest
	 *            解压操作的目录目录
	 */
	public static void unzip(File src, File dest) throws IOException {
		Project proj = new Project();
		Expand expand = new Expand();
		expand.setProject(proj);
		expand.setTaskType("unzip");
		expand.setTaskName("unzip");
		expand.setSrc(src);
		expand.setDest(dest);
		expand.setEncoding(encoding);//设置编码不能少,少了文件名会有乱码
		expand.execute();
	}

	



	public static void main(String[] args) {
		// D:\\evidence\\20120712\\重生回到1997_2012071213114144\\言情小说吧_www.xs8.cn
		try {
			ZipUtils
					.zip(
							new File(
									"D:\\evidence\\20120712\\重生回到1997_2012071213114144\\言情小说吧_www.xs8.cn"),
							new File(
									"D:\\evidence\\20120712\\重生回到1997_2012071213114144\\言情.zip"));
			
			
			
			ZipUtils
			.unzip(new File(
			"D:\\evidence\\20120712\\重生回到1997_2012071213114144\\言情.zip"),new File(
			"D:\\test\\"));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

 

你可能感兴趣的:(java压缩)