网上瞟来的,备忘(http://szhnet.javaeye.com/blog/199059)

来源:互联网 发布:mac快压游讯 编辑:程序博客网 时间:2024/06/03 18:57
package net.szh.zip;import java.io.File;import org.apache.tools.ant.Project;import org.apache.tools.ant.taskdefs.Zip;import org.apache.tools.ant.types.FileSet;public class ZipCompressorByAnt {private File zipFile;public ZipCompressorByAnt(String pathName) {zipFile = new File(pathName);}public void compress(String srcPathName) {File srcdir = new File(srcPathName);if (!srcdir.exists())throw new RuntimeException(srcPathName + "不存在!");Project prj = new Project();Zip zip = new Zip();zip.setProject(prj);zip.setDestFile(zipFile);FileSet fileSet = new FileSet();fileSet.setProject(prj);fileSet.setDir(srcdir);//fileSet.setIncludes("**/*.java"); 包括哪些文件或文件夹 eg:zip.setIncludes("*.java");//fileSet.setExcludes(...); 排除哪些文件或文件夹zip.addFileset(fileSet);zip.execute();
package net.szh.zip;public class TestZip {public static void main(String[] args) {ZipCompressor zc = new  ZipCompressor("E://szhzip.zip");zc.compress("E://test");ZipCompressorByAnt zca = new ZipCompressorByAnt("E://szhzipant.zip");zca.compress("E://test");}}
package net.szh.zip;import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.util.zip.CRC32;import java.util.zip.CheckedOutputStream;import org.apache.tools.zip.ZipEntry;import org.apache.tools.zip.ZipOutputStream;public class ZipCompressor {static final int BUFFER = 8192;private File zipFile;public ZipCompressor(String pathName) {zipFile = new File(pathName);}public void compress(String srcPathName) {File file = new File(srcPathName);if (!file.exists())throw new RuntimeException(srcPathName + "不存在!");try {FileOutputStream fileOutputStream = new FileOutputStream(zipFile);CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream,new CRC32());ZipOutputStream out = new ZipOutputStream(cos);String basedir = "";compress(file, out, basedir);out.close();} catch (Exception e) {throw new RuntimeException(e);}}private void compress(File file, ZipOutputStream out, String basedir) {/* 判断是目录还是文件 */if (file.isDirectory()) {System.out.println("压缩:" + basedir + file.getName());this.compressDirectory(file, out, basedir);} else {System.out.println("压缩:" + basedir + file.getName());this.compressFile(file, out, basedir);}}/** 压缩一个目录 */private void compressDirectory(File dir, ZipOutputStream out, String basedir) {if (!dir.exists())return;File[] files = dir.listFiles();for (int i = 0; i < files.length; i++) {/* 递归 */compress(files[i], out, basedir + dir.getName() + "/");}}/** 压缩一个文件 */private void compressFile(File file, ZipOutputStream out, String basedir) {if (!file.exists()) {return;}try {BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));ZipEntry entry = new ZipEntry(basedir + file.getName());out.putNextEntry(entry);int count;byte data[] = new byte[BUFFER];while ((count = bis.read(data, 0, BUFFER)) != -1) {out.write(data, 0, count);}bis.close();} catch (Exception e) {throw new RuntimeException(e);}}}
}}
原创粉丝点击