2019独角兽企业重金招聘Python工程师标准>>>

Java调用Ant API用法 
用法 API 调用 JAVA 
Ant是Java程序员的一个好的工具,主要可以帮助程序员进行java项目的的管理,包括批量编译、部署、文档生成等工作,其用途远不止如此,ant内置了大量的API进行各种文件系统操作,在各种应用服务器中都被广泛应用于程序和资源的部署。

Ant功能强大的地方在于,程序员不仅能通过编写Ant的脚本(build.xml)来进行各种文件部署管理操作,还可以通过调用Ant的丰富的API,甚至扩展Ant的API进行编程。

用于介绍Ant 脚本编写的书比较多,而介绍Java 调用 Ant API的书籍和资料比较少,初学者用户在进行Ant编程时会遇到不少麻烦,笔者也是在项目开发过程中,逐渐摸索并掌握了一些Java调用Ant API的一些方法和技巧,并将常用的案例收集起来呈现给大家(本文使用Ant 1.7.0版本),以供大家参考。当然,Ant的API非常丰富,本文仅做抛砖引玉之用,更强大的功能还需要读者自己在结合Ant的API进行摸索和领悟。

1.  目录操作: 
1)  创建目录

Project prj=new Project(); 
Mkdir mkdir=new Mkdir(); 
mkdir.setProject(prj); 
mkdir.setDir(new File("d:tempdir1")); 
mkdir.execute();

2)  删除目录

Project prj=new Project(); 
Delete delete=new Delete(); 
delete.setProject(prj); 
delete.setDir(new File("d:tempdir1")); //可同时将子目录及所有文件删除 
delete.execute();

注:对每一个Ant Task,如Mkdir,Delete、Copy、Move、Zip等,都必须设置一个Project对象,可以几个Ant Task共用一个Project对象,但不能有Ant Task不设置Project对象。

2. 文件拷贝和移动、更名 
1)文件copy

Project prj=new Project(); 
Copy copy=new Copy(); 
copy.setProject(prj); 
copy.setFile(new File("d:tempf1.txt"); 
copy.setTodir(new File("d:tempdir1")); 
copy.execute(); //将f1.txt文件copy到dir1中

2)copy文件并同时替换其中的内容, 如将 xml中的 @eosapp_name@ 替换成真正的应用名称

Project prj=new Project(); 
Copy copy = new Copy(); 
copy.setEncoding("UTF-8"); 
copy.setProject(prj); 
copy.setTodir("d:temp");

FileSet fileSet=new FileSet(); 
fileSet.setDir(new File(eosHome+"/base/template.app")); 
fileSet.setIncludes("**/*.xml"); 
copy.addFileset(fileSet);

FilterSet filter=copy.createFilterSet(); 
filter.addFilter("eosapp_name","app1"); 
copy.execute();

2)文件或目录移动 
Move的用法和Copy用法基本一致,Move本身为Copy的子类。

Project prj=new Project(); 
Copy copy=new Copy(); 
copy.setProject(prj); 
copy.setFile(new File("d:tempf1.txt"); 
copy.setTodir(new File("d:tempdir1")); 
copy.execute(); //将f1.txt文件移动到dir1中

3)文件改名:

Project prj=new Project(); 
Copy copy=new Copy(); 
copy.setProject(prj); 
copy.setFile(new File("d:tempf1.txt"); 
copy.setTodir(new File("d:tempf2.txt")); 
copy.execute(); //将f1.txt文件更名为f2.txt中

4)目录更名:

Project prj=new Project(); 
Copy copy=new Copy(); 
copy.setProject(prj); 
copy.setFile(new File("d:tempdir1"); 
copy.setTodir(new File("d:tempdir2")); 
copy.execute(); //将dir1目录更名为dir2,相当于将dir1目录下的所有文件移到dir2目录下

3.使用文件集 FileSet 
使用文件集可以同时将多个满足匹配条件的文件集合进行copy、move和压缩等操作。

Project prj=new Project(); 
Copy copy=new Copy(); 
copy.setProject(prj); 
copy.setTodir(new File("d:temptodir"));

FileSet fs=new FileSet(); 
fs.setProject(prj); 
fs.setDir(new File("d:javaprjsrc")); 
fs.setIncludes("**/*.*"); //包含所有文件 
fs.setExcludes("**/CVS,**/*.class"); //排除CVS相关文件,以及.class文件 
copy.addFileset(fs);

copy.execute();

注: FileSet的setIncludes, 和setExcludes方法输入pattern, pattern是一个使用“,”或空格分隔的匹配字符串,其中, “**”代表所有文件或目录,“*.*”代表说有文件, “*.java”代表所有扩展名为java的文件。

4.目录扫描,查找文件

DirectoryScanner ds=new DirectoryScanner(); 
ds.setBasedir(new File("d:tempwar")); 
ds.setIncludes(new String[] ); 
ds.scan(); 
if(ds.getIncludedFilesCount()>0) { 
System.out.println("found jsp!"); 
String[] includeFiles=ds.getIncludedFiles(); 
for(String file:includeFiles){ 
System.out.println(file); 

}

5.文件压缩,打包 
//压缩为zip文件

Project prj=new Project(); 
Zip zip=new Zip(); 
zip.setProject(prj); 
zip.setDestFile(new File("d:tempsrc.zip")); 
FileSet fileSet=new FileSet(); 
fileSet.setProject(prj); 
fileSet.setDir(new File("d:javaprjprj1src")); 
fileSet.setIncludes("**/*.java"); 
zip.addFileset(fileSet); 
zip.execute();

//将class文件打成jar包 
Project prj=new Project(); 
Jar jar=new Jar(); 
jar.setProject(prj); 
jar.setDestFile(new File("d:tempprj1.jar")); 
FileSet fileSet=new FileSet(); 
fileSet.setProject(prj); 
fileSet.setDir(new File("d:javaprjprj1bin")); 
fileSet.setIncludes("**/*.class,**/*.properties"); 
jar.addFileset(fileSet); 
jar.execute();

6.文件解压 
1)将压缩文件中的所有文件解压

Project prj=new Project(); 
Expand expand=new Expand(); 
expand.setProject(prj); 
expand.setSrc(new File("d:tempsrc.zip")); 
expand.setOverwrite(overwrite); 
expand.setDest("d:tempoutsrc"); 
expand.execute();

2)将压缩文件中的符合匹配条件的文件解压

Project prj=new Project(); 
Expand expand=new Expand(); 
expand.setProject(prj); 
expand.setSrc(new File("d:tempsrc.zip")); 
expand.setOverwrite(overwrite); 
expand.setDest("d:tempoutsrc"); 
PatternSet patternset = new PatternSet(); 
patternset.setIncludes("**/*.java"); 
patternset.setProject(prj); 
expand.addPatternset(patternset); 
expand.execute();

3)利用Mapper解压文件: 如将 .../lib/*.jar 解压到 .../WEB-INF/lib目录下(去除目录结构)

Expand expand = new Expand(); 
expand.setProject(prj); 
expand.setSrc(new File(zipFilePath)); 
expand.setDest(new File(webDir+"/WEB-INF/lib"));

PatternSet pattern = new PatternSet(); 
pattern.setIncludes("lib/*.jar"); 
expand.addPatternset(pattern);

FileNameMapper mapper=new FlatFileNameMapper(); 
expand.add(mapper);

/* another way using mapper 
Mapper mapper=expand.createMapper(); 
MapperType type=new MapperType(); 
type.setValue("flatten"); 
mapper.setType(type); 
*/ 
expand.execute();

7.读取zip文件 
1) 读取zip文件中的文件和目录

ZipFile zipfile = new ZipFile(new File(filepath)); 
for (Enumeration entries = zipfile.getEntries(); entries.hasMoreElements();) { 
ZipEntry entry = (ZipEntry) entries.nextElement(); 
if(entry.isDirectory()) 
System.out.println("Directory: "+entry.getName()); 
else 
System.out.println("file: "+entry.getName()); 

zipfile.close(); //ZipFile用完必须close,否则文件被锁定

2)zip文件扫描,在Zip文件中查找目录或文件

ZipScanner scan=new ZipScanner(); 
scan.setSrc(new File("d:temptest.zip")); 
scan.setIncludes(new String[] ); //查找目录(一、二级目录); 
scan.scan(); 
String dirs[]=scan.getIncludedDirectories(); 
scan.setIncludes(new String[]); //查找文件 
scan.scan(); 
String files[]=scan.getIncludedFiles();

转载于:https://my.oschina.net/Kimerchina/blog/354036

转载:JAVA 操作 Ant API相关推荐

  1. rocketmq(三 java操作rocket API, rocketmq 幂等性)

    JAVA操作rocketmq: 1.导入rocketmq所需要的依赖: <dependency><groupId>com.alibaba.rocketmq</groupI ...

  2. JAVA操作HDFS API(hadoop)

    http://www.cnblogs.com/alisande/archive/2012/06/06/2537903.html HDFS API详解 Hadoop中关于文件操作类基本上全部是在&quo ...

  3. java生成水印_[转载]java操作word生成水印

    应用场景 为了保护版权或辨别文件的真伪,有时需要在生成的Word文件中动态添加水印,PageOffice组件的WaterMark类就封装了给在线编辑的Word文件添加水印这一功能,调用接口非常简单. ...

  4. java操作Excel有两种方式 方式1:jxl操作Excel jxl的API

    java操作Excel有两种方式 方式1:jxl操作Excel 方式2:poi操作Excel 下面介绍jxl API: 使用Windows操作系统的朋友对Excel(电子表格)一定不会陌生,但是要使用 ...

  5. ant java 返回,在Java中直接操作ant回测试和生成测试报告

    在Java中直接操作ant来测试和生成测试报告 Ant是大家熟悉的构建工具,一般情况下,大家都是使用build.xml文件来配置使用Ant,这样的Ant已经是十分强大的.但有些怪异的场景需求特殊,你可 ...

  6. Java 8 Stream Api 中的 skip 和 limit 操作

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 1. 前言 Java 8 Stream API 中的sk ...

  7. Java操作mongoDB2.6的常见API使用方法

    对于mongoDB而言,学习方式和学习关系型数据库差不太多 開始都是学习怎样insert.find.update.remove,然后就是分页.排序.索引,再接着就是主从复制.副本集.分片等等 最后就是 ...

  8. java excel api 下载文件_Java-Excel Java操作Excel POI(Jakarta POI API) - 下载 - 搜珍网

    Java操作Excel/Jakarta POI API/data/Jakarta POI API.doc Java操作Excel/Jakarta POI API/jar/poi-3.0.2-FINAL ...

  9. Java 操作excel表格 - JXL(Java excel api)

    Java 操作excel表格 Java 操作 Excel 最常用的就是JXL(Java excel api)和POI,用起来挺简单的,不过相应的其功能也并非很强大,够用就行! 首先,下载jxl.jar ...

最新文章

  1. 百度2016/2017秋招部分题目解析
  2. 【robot framework日志】更改log地址(简)
  3. 唤醒控件曾经拥有的能力
  4. WordPress 已过时?创始人与新架构拥护者开战
  5. 为什么写公众号,为什么改名字
  6. 牛客16662 津津的储蓄计划
  7. c#位数不够0补充完_Java与C#比较,哪个语言更是适合你?
  8. python 调用js类_Python 调用 JS 常用的4种方式,带你学会如何解密
  9. PGM:部分观测数据
  10. 一篇 JPA 总结
  11. 开发人员的测试报告,要包含各平台
  12. 多媒体计算机教室的使用与管理,多媒体教室计算机管理论文
  13. Snowflake id生成器
  14. 烽火狼烟丨PHP远程代码执行漏洞(CVE-2022-31625、CVE-2022-31626)风险提示
  15. 文章2:多功能智能跟随行李箱控制系统设计 | 本科毕业设计 - 【论文终稿】
  16. 【c4d学习笔记】对称方向不对的问题
  17. 圆柱体积怎么算立方公式_圆柱的立方计算公式
  18. 【数据库实验】实验二 学习SQL 语句的数据操纵与视图
  19. Vue开发之基础路由
  20. 相对地址和绝对地址的理解

热门文章

  1. 敏捷到底有没有带来新的东西?
  2. openharmony编译报错ubuntu20.04按照官方文档,hb set报错为OHOS ERROR] Invalid vendor path: /home/openharmony/vendor
  3. 没有调查就没有发言权
  4. python mysql数据库长连接_python 长连接 mysql数据库
  5. python下载网络错误_下载失败,出现“网络错误”+40000
  6. cmd mysql 报错_客户端cmd打开mysql,执行插入中文报错或插入中文乱码解决方案
  7. 最强蜗牛击败毁灭机器人_最强蜗牛:恶魔形态解锁攻略
  8. Memcached 1.5.13 发布,支持 TLS
  9. Azure云端部署Exchange 2016双数据中心—Part6(DAG切换测试)
  10. Swagger UI 与SpringMVC的整合 II