使用 Maven 环境,添加 ant 依赖包,如下:
<dependency> <groupId>org.apache.ant</groupId> <artifactId>ant</artifactId> <version>1.9.4</version> <optional>true</optional> </dependency>
在对文件及文件夹打包的时候,会有各种过滤条件或要求,以下为自己使用过程中的笔记:
1. 根据文件大小:
@Test public void testFilterSize2Zip() throws Exception { Project project = new Project(); Zip zip = new Zip(); zip.setProject(project); //设置生成的目标zip文件File对象 zip.setDestFile(new File("E:/test.zip")); FileSet fileSet = new FileSet(); fileSet.setProject(project); //设置将要进行压缩的源文件File对象 fileSet.setDir(new File("E:/tt")); SizeSelector sizeSelector = new SizeSelector(); sizeSelector.setValue(1L); SizeSelector.SizeComparisons sizeComparisons = new SizeSelector.SizeComparisons(); sizeComparisons.setValue(Comparison.GREATER_EQUAL.getValue()); sizeSelector.setWhen(sizeComparisons); fileSet.addSize(sizeSelector); zip.addFileset(fileSet); zip.execute(); }
2. 按照文件名称过滤
@Test public void testProjectZip() throws Exception { Project project = new Project(); Zip zip = new Zip(); zip.setProject(project); //设置生成的目标zip文件File对象 zip.setDestFile(new File("E:/test.zip")); FileSet fileSet = new FileSet(); fileSet.setProject(project); //设置将要进行压缩的源文件File对象 fileSet.setDir(new File("E:/tt")); FilenameSelector filenameSelector = new FilenameSelector(); filenameSelector.setRegex("1.*"); // filenameSelector.setName("1.*"); filenameSelector.setCasesensitive(true); filenameSelector.setNegate(false); fileSet.addFilename(filenameSelector); zip.addFileset(fileSet); zip.execute(); }
3. 按照文件时间过滤
@Test public void testProjectZip() throws Exception { Project project = new Project(); Zip zip = new Zip(); zip.setProject(project); //设置生成的目标zip文件File对象 zip.setDestFile(new File("E:/test.zip")); FileSet fileSet = new FileSet(); fileSet.setProject(project); //设置将要进行压缩的源文件File对象 fileSet.setDir(new File("E:/tt")); DateSelector dateSelector = new DateSelector(); dateSelector.setMillis(System.currentTimeMillis()); dateSelector.setGranularity(1); dateSelector.setWhen(TimeComparison.BEFORE); dateSelector.setCheckdirs(true); fileSet.addDate(dateSelector); zip.addFileset(fileSet); zip.execute(); }
4. 按照文件夹深度过滤
@Test public void testProjectZip() throws Exception { Project project = new Project(); Zip zip = new Zip(); zip.setProject(project); //设置生成的目标zip文件File对象 zip.setDestFile(new File("E:/test.zip")); FileSet fileSet = new FileSet(); fileSet.setProject(project); //设置将要进行压缩的源文件File对象 fileSet.setDir(new File("E:/tt")); DepthSelector depthSelector = new DepthSelector(); depthSelector.setMax(3); depthSelector.setMin(1); fileSet.addDepth(depthSelector); zip.addFileset(fileSet); zip.execute(); }
5. 根据文件校验算法过滤
@Test public void testProjectZip() throws Exception { Project project = new Project(); Zip zip = new Zip(); zip.setProject(project); //设置生成的目标zip文件File对象 zip.setDestFile(new File("E:/test.zip")); FileSet fileSet = new FileSet(); fileSet.setProject(project); //设置将要进行压缩的源文件File对象 fileSet.setDir(new File("E:/tt")); ModifiedSelector modifiedSelector = new ModifiedSelector(); ModifiedSelector.AlgorithmName algorithmName = new ModifiedSelector.AlgorithmName(); //"hashvalue", "digest", "checksum" algorithmName.setValue("checksum"); modifiedSelector.setAlgorithm(algorithmName); fileSet.addModified(modifiedSelector); zip.addFileset(fileSet); zip.execute(); }
6. 根据文件属性过滤
@Test public void testProjectZip() throws Exception { Project project = new Project(); Zip zip = new Zip(); zip.setProject(project); //设置生成的目标zip文件File对象 zip.setDestFile(new File("E:/test.zip")); FileSet fileSet = new FileSet(); fileSet.setProject(project); //设置将要进行压缩的源文件File对象 fileSet.setDir(new File("E:/tt")); ReadableSelector readableSelector = new ReadableSelector(); Resource resource = new Resource(); resource.setDirectory(true); resource.setExists(true); readableSelector.isSelected(resource); fileSet.addReadable(readableSelector); zip.addFileset(fileSet); zip.execute(); }
当然,还有其他类型的过滤方式,剩下的方式,请读者自行挖掘。