最近用到了压缩与解压文件,于是采用了ant的zip类,下面做下使用细节介绍
- 压缩单个指定文件
- 压缩对应目录指定的文件
压缩指定的文件
指定对应的目录下的文件名,可以为多个:
fileSet.setIncludes(“1.docx,1.doc”);
该方法的参数是文件名的列表,中间用逗号或则空格隔开,也可以采用通配符 eg:zip.setIncludes(“*.docx”); 用于设置要加压的文件或则文件夹
fileSet.setExcludes(“2.docx,2.doc”)
参数跟setIncludes一样,用于设置该目录下不想合并压缩的文件或则文件夹
对应的测试代码如下所示
/**
* 执行压缩操作
* @param srcPathName 需要被压缩的文件/文件夹
*/
public void compressTest(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("1.docx,1.doc"); //包括哪些文件或文件夹 eg:zip.setIncludes("*.java");
//fileSet.setExcludes(...); //排除哪些文件或文件夹 可以使用支持通配符匹配也可以直接是该目录下的文件名字符串 eg:zip.setExcludes("a.java,b.txt,c.exe");
zip.addFileset(fileSet);
zip.execute();
}
setIncludes 可以看下apache提供的zip jar源码 ,它实际上是采用的空格与逗号进行文件名的分解,采用这个方法就得注意了文件名不能有空格的哦,要是文件名有空格,那就看下面的方法吧,待会奉上免费下载地址
下面提供多文件压缩的另一种方法
private File zip(String zipFilePath ,String fileNames, String srcPath) {
File zipFile = new File(zipFilePath);
File srcdir = new File(srcPath);
Project prj = new Project();
Zip zip = new Zip();
zip.setProject(prj);
zip.setDestFile(zipFile);
FileSet fileSet = new FileSet();
fileSet.setProject(prj);
fileSet.setDir(srcdir);
String names[] = fileNames.split(",");
for(String name: names){
fileSet.createInclude().setName(name); //通过这种方法添加多个文件,相当于自己做了zip中的分解分解名的这步
}
zip.addFileset(fileSet);
zip.setEncoding("gbk");
zip.execute();
return zipFile;
}
通过fileSet.createInclude().setName来实现添加要压缩的文件,实现多文件压缩
最后附上相关jar的下载地址: