随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)
在java文件压缩中使用的是org.apache.tools.zip.ZipOutputStream,本文使用org.apache.tools.ant.taskdefs.Zip来进行压缩,更方便,同样支持中文无乱码,代码如下:
测试类Test:
package com.home;
import java.io.IOException;
public class Test {
public Test() {
try {
ZipUtil.zip("D://test", "D://test1.zip");// 压缩整个文件来
ZipUtil.zip("D://test.doc", "D://test2.zip");// 压缩单个文件
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new Test();
}
}
压缩工具类ZipUtil:
package com.home;
import java.io.File;
import java.io.IOException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Zip;
import org.apache.tools.ant.types.FileSet;
public class ZipUtil {
public static void zip(String src, String des) throws IOException {
File srcFile = new File(src);// 源文件
File desFile = new File(des);// 目标zip文件
Project project = new Project();
Zip zip = new Zip();
zip.setProject(project);
zip.setDestFile(desFile);
FileSet fileSet = new FileSet();
fileSet.setProject(project);
if (srcFile.isFile()) {
fileSet.setFile(srcFile);
} else if (srcFile.isDirectory()) {
fileSet.setDir(srcFile);
}
// fileSet.setIncludes("**/*.java"); //包含哪些文件或文件夹
// eg:zip.setIncludes("*.java")
// fileSet.setExcludes(...); //排除哪些文件或文件夹
zip.addFileset(fileSet);
zip.execute();
}
}