[轉]Java調用Ant API用法收集

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) 刪除目錄

1. Project prj=new Project();
2. Delete delete=new Delete();
3. delete.setProject(prj);
4. delete.setDir(new File("d:tempdir1")); //可同時將子目錄及所有文件刪除
5. delete.execute();


注:對每一個Ant Task,如Mkdir,Delete、Copy、Move、Zip等,都必須設置一個Project對象,可以幾個Ant Task共用一個Project對象,但不能有Ant Task不設置Project對象。
2. 文件拷貝和移動、更名
1)文件copy

1. Project prj=new Project();
2. Copy copy=new Copy();
3. copy.setProject(prj);
4. copy.setFile(new File("d:tempf1.txt");
5. copy.setTodir(new File("d:tempdir1"));
6. copy.execute(); //將f1.txt文件copy到dir1中


2)copy文件並同時替換其中的內容, 如將 xml中的 @eosapp_name@ 替換成真正的應用名稱

1. Project prj=new Project();
2. Copy copy = new Copy();
3. copy.setEncoding("UTF-8");
4. copy.setProject(prj);
5. copy.setTodir("d:temp");
6.
7. FileSet fileSet=new FileSet();
8. fileSet.setDir(new File(eosHome "/base/template.app"));
9. fileSet.setIncludes("**/*.xml");
10. copy.addFileset(fileSet);
11.
12. FilterSet filter=copy.createFilterSet();
13. filter.addFilter("eosapp_name","app1");
14. copy.execute();


2)文件或目錄移動
Move的用法和Copy用法基本一致,Move本身爲Copy的子類。

1. Project prj=new Project();
2. Copy copy=new Copy();
3. copy.setProject(prj);
4. copy.setFile(new File("d:tempf1.txt");
5. copy.setTodir(new File("d:tempdir1"));
6. copy.execute(); //將f1.txt文件移動到dir1中


3)文件改名:

1. Project prj=new Project();
2. Copy copy=new Copy();
3. copy.setProject(prj);
4. copy.setFile(new File("d:tempf1.txt");
5. copy.setTodir(new File("d:tempf2.txt"));
6. copy.execute(); //將f1.txt文件更名爲f2.txt中


4)目錄更名:

1. Project prj=new Project();
2. Copy copy=new Copy();
3. copy.setProject(prj);
4. copy.setFile(new File("d:tempdir1");
5. copy.setTodir(new File("d:tempdir2"));
6. copy.execute(); //將dir1目錄更名爲dir2,相當於將dir1目錄下的所有文件移到dir2目錄下


3.使用文件集 FileSet
使用文件集可以同時將多個滿足匹配條件的文件集合進行copy、move和壓縮等操作。

1. Project prj=new Project();
2. Copy copy=new Copy();
3. copy.setProject(prj);
4. copy.setTodir(new File("d:temptodir"));
5.
6. FileSet fs=new FileSet();
7. fs.setProject(prj);
8. fs.setDir(new File("d:javaprjsrc"));
9. fs.setIncludes("**/*.*"); //包含所有文件
10. fs.setExcludes("**/CVS,**/*.class"); //排除CVS相關文件,以及.class文件
11. copy.addFileset(fs);
12.
13. copy.execute();


注: FileSet的setIncludes, 和setExcludes方法輸入pattern, pattern是一個使用“,”或空格分隔的匹配字符串,其中, “**”代表所有文件或目錄,“*.*”代表說有文件, “*.java”代表所有擴展名爲java的文件。
4.目錄掃描,查找文件

1. DirectoryScanner ds=new DirectoryScanner();
2. ds.setBasedir(new File("d:tempwar"));
3. ds.setIncludes(new String[] );
4. ds.scan();
5. if(ds.getIncludedFilesCount()>0) {
6. System.out.println("found jsp!");
7. String[] includeFiles=ds.getIncludedFiles();
8. for(String file:includeFiles){
9. System.out.println(file);
10. }
11. }


5.文件壓縮,打包
//壓縮爲zip文件

1. Project prj=new Project();
2. Zip zip=new Zip();
3. zip.setProject(prj);
4. zip.setDestFile(new File("d:tempsrc.zip"));
5. FileSet fileSet=new FileSet();
6. fileSet.setProject(prj);
7. fileSet.setDir(new File("d:javaprjprj1src"));
8. fileSet.setIncludes("**/*.java");
9. zip.addFileset(fileSet);
10. zip.execute();
11.
12. //將class文件打成jar包
13. Project prj=new Project();
14. Jar jar=new Jar();
15. jar.setProject(prj);
16. jar.setDestFile(new File("d:tempprj1.jar"));
17. FileSet fileSet=new FileSet();
18. fileSet.setProject(prj);
19. fileSet.setDir(new File("d:javaprjprj1bin"));
20. fileSet.setIncludes("**/*.class,**/*.properties");
21. jar.addFileset(fileSet);
22. jar.execute();


6.文件解壓
1)將壓縮文件中的所有文件解壓

1. Project prj=new Project();
2. Expand expand=new Expand();
3. expand.setProject(prj);
4. expand.setSrc(new File("d:tempsrc.zip"));
5. expand.setOverwrite(overwrite);
6. expand.setDest("d:tempoutsrc");
7. expand.execute();


2)將壓縮文件中的符合匹配條件的文件解壓

1. Project prj=new Project();
2. Expand expand=new Expand();
3. expand.setProject(prj);
4. expand.setSrc(new File("d:tempsrc.zip"));
5. expand.setOverwrite(overwrite);
6. expand.setDest("d:tempoutsrc");
7. PatternSet patternset = new PatternSet();
8. patternset.setIncludes("**/*.java");
9. patternset.setProject(prj);
10. expand.addPatternset(patternset);
11. expand.execute();


3)利用Mapper解壓文件: 如將 .../lib/*.jar 解壓到 .../WEB-INF/lib目錄下(去除目錄結構)

1. Expand expand = new Expand();
2. expand.setProject(prj);
3. expand.setSrc(new File(zipFilePath));
4. expand.setDest(new File(webDir "/WEB-INF/lib"));
5.
6. PatternSet pattern = new PatternSet();
7. pattern.setIncludes("lib/*.jar");
8. expand.addPatternset(pattern);
9.
10. FileNameMapper mapper=new FlatFileNameMapper();
11. expand.add(mapper);
12.
13. /* another way using mapper
14. Mapper mapper=expand.createMapper();
15. MapperType type=new MapperType();
16. type.setValue("flatten");
17. mapper.setType(type);
18. */
19. expand.execute();


7.讀取zip文件
1) 讀取zip文件中的文件和目錄

1. ZipFile zipfile = new ZipFile(new File(filepath));
2. for (Enumeration entries = zipfile.getEntries(); entries.hasMoreElements();) {
3. ZipEntry entry = (ZipEntry) entries.nextElement();
4. if(entry.isDirectory())
5. System.out.println("Directory: " entry.getName());
6. else
7. System.out.println("file: " entry.getName());
8. }
9. zipfile.close(); //ZipFile用完必須close,否則文件被鎖定


2)zip文件掃描,在Zip文件中查找目錄或文件

1. ZipScanner scan=new ZipScanner();
2. scan.setSrc(new File("d:temptest.zip"));
3. scan.setIncludes(new String[] ); //查找目錄(一、二級目錄);
4. scan.scan();
5. String dirs[]=scan.getIncludedDirectories();
6. scan.setIncludes(new String[]); //查找文件
7. scan.scan();
8. String files[]=scan.getIncludedFiles();


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) 創建目錄

1. Project prj=new Project();
2. Mkdir mkdir=new Mkdir();
3. mkdir.setProject(prj);
4. mkdir.setDir(new File("d:tempdir1"));
5. mkdir.execute();


2) 刪除目錄

1. Project prj=new Project();
2. Delete delete=new Delete();
3. delete.setProject(prj);
4. delete.setDir(new File("d:tempdir1")); //可同時將子目錄及所有文件刪除
5. delete.execute();


注:對每一個Ant Task,如Mkdir,Delete、Copy、Move、Zip等,都必須設置一個Project對象,可以幾個Ant Task共用一個Project對象,但不能有Ant Task不設置Project對象。
2. 文件拷貝和移動、更名
1)文件copy

1. Project prj=new Project();
2. Copy copy=new Copy();
3. copy.setProject(prj);
4. copy.setFile(new File("d:tempf1.txt");
5. copy.setTodir(new File("d:tempdir1"));
6. copy.execute(); //將f1.txt文件copy到dir1中


2)copy文件並同時替換其中的內容, 如將 xml中的 @eosapp_name@ 替換成真正的應用名稱

1. Project prj=new Project();
2. Copy copy = new Copy();
3. copy.setEncoding("UTF-8");
4. copy.setProject(prj);
5. copy.setTodir("d:temp");
6.
7. FileSet fileSet=new FileSet();
8. fileSet.setDir(new File(eosHome "/base/template.app"));
9. fileSet.setIncludes("**/*.xml");
10. copy.addFileset(fileSet);
11.
12. FilterSet filter=copy.createFilterSet();
13. filter.addFilter("eosapp_name","app1");
14. copy.execute();


2)文件或目錄移動
Move的用法和Copy用法基本一致,Move本身爲Copy的子類。

1. Project prj=new Project();
2. Copy copy=new Copy();
3. copy.setProject(prj);
4. copy.setFile(new File("d:tempf1.txt");
5. copy.setTodir(new File("d:tempdir1"));
6. copy.execute(); //將f1.txt文件移動到dir1中


3)文件改名:

1. Project prj=new Project();
2. Copy copy=new Copy();
3. copy.setProject(prj);
4. copy.setFile(new File("d:tempf1.txt");
5. copy.setTodir(new File("d:tempf2.txt"));
6. copy.execute(); //將f1.txt文件更名爲f2.txt中


4)目錄更名:

1. Project prj=new Project();
2. Copy copy=new Copy();
3. copy.setProject(prj);
4. copy.setFile(new File("d:tempdir1");
5. copy.setTodir(new File("d:tempdir2"));
6. copy.execute(); //將dir1目錄更名爲dir2,相當於將dir1目錄下的所有文件移到dir2目錄下


3.使用文件集 FileSet
使用文件集可以同時將多個滿足匹配條件的文件集合進行copy、move和壓縮等操作。

1. Project prj=new Project();
2. Copy copy=new Copy();
3. copy.setProject(prj);
4. copy.setTodir(new File("d:temptodir"));
5.
6. FileSet fs=new FileSet();
7. fs.setProject(prj);
8. fs.setDir(new File("d:javaprjsrc"));
9. fs.setIncludes("**/*.*"); //包含所有文件
10. fs.setExcludes("**/CVS,**/*.class"); //排除CVS相關文件,以及.class文件
11. copy.addFileset(fs);
12.
13. copy.execute();


注: FileSet的setIncludes, 和setExcludes方法輸入pattern, pattern是一個使用“,”或空格分隔的匹配字符串,其中, “**”代表所有文件或目錄,“*.*”代表說有文件, “*.java”代表所有擴展名爲java的文件。
4.目錄掃描,查找文件

1. DirectoryScanner ds=new DirectoryScanner();
2. ds.setBasedir(new File("d:tempwar"));
3. ds.setIncludes(new String[] );
4. ds.scan();
5. if(ds.getIncludedFilesCount()>0) {
6. System.out.println("found jsp!");
7. String[] includeFiles=ds.getIncludedFiles();
8. for(String file:includeFiles){
9. System.out.println(file);
10. }
11. }


5.文件壓縮,打包
//壓縮爲zip文件

1. Project prj=new Project();
2. Zip zip=new Zip();
3. zip.setProject(prj);
4. zip.setDestFile(new File("d:tempsrc.zip"));
5. FileSet fileSet=new FileSet();
6. fileSet.setProject(prj);
7. fileSet.setDir(new File("d:javaprjprj1src"));
8. fileSet.setIncludes("**/*.java");
9. zip.addFileset(fileSet);
10. zip.execute();
11.
12. //將class文件打成jar包
13. Project prj=new Project();
14. Jar jar=new Jar();
15. jar.setProject(prj);
16. jar.setDestFile(new File("d:tempprj1.jar"));
17. FileSet fileSet=new FileSet();
18. fileSet.setProject(prj);
19. fileSet.setDir(new File("d:javaprjprj1bin"));
20. fileSet.setIncludes("**/*.class,**/*.properties");
21. jar.addFileset(fileSet);
22. jar.execute();


6.文件解壓
1)將壓縮文件中的所有文件解壓

1. Project prj=new Project();
2. Expand expand=new Expand();
3. expand.setProject(prj);
4. expand.setSrc(new File("d:tempsrc.zip"));
5. expand.setOverwrite(overwrite);
6. expand.setDest("d:tempoutsrc");
7. expand.execute();


2)將壓縮文件中的符合匹配條件的文件解壓

1. Project prj=new Project();
2. Expand expand=new Expand();
3. expand.setProject(prj);
4. expand.setSrc(new File("d:tempsrc.zip"));
5. expand.setOverwrite(overwrite);
6. expand.setDest("d:tempoutsrc");
7. PatternSet patternset = new PatternSet();
8. patternset.setIncludes("**/*.java");
9. patternset.setProject(prj);
10. expand.addPatternset(patternset);
11. expand.execute();


3)利用Mapper解壓文件: 如將 .../lib/*.jar 解壓到 .../WEB-INF/lib目錄下(去除目錄結構)

1. Expand expand = new Expand();
2. expand.setProject(prj);
3. expand.setSrc(new File(zipFilePath));
4. expand.setDest(new File(webDir "/WEB-INF/lib"));
5.
6. PatternSet pattern = new PatternSet();
7. pattern.setIncludes("lib/*.jar");
8. expand.addPatternset(pattern);
9.
10. FileNameMapper mapper=new FlatFileNameMapper();
11. expand.add(mapper);
12.
13. /* another way using mapper
14. Mapper mapper=expand.createMapper();
15. MapperType type=new MapperType();
16. type.setValue("flatten");
17. mapper.setType(type);
18. */
19. expand.execute();


7.讀取zip文件
1) 讀取zip文件中的文件和目錄

1. ZipFile zipfile = new ZipFile(new File(filepath));
2. for (Enumeration entries = zipfile.getEntries(); entries.hasMoreElements();) {
3. ZipEntry entry = (ZipEntry) entries.nextElement();
4. if(entry.isDirectory())
5. System.out.println("Directory: " entry.getName());
6. else
7. System.out.println("file: " entry.getName());
8. }
9. zipfile.close(); //ZipFile用完必須close,否則文件被鎖定


2)zip文件掃描,在Zip文件中查找目錄或文件

1. ZipScanner scan=new ZipScanner();
2. scan.setSrc(new File("d:temptest.zip"));
3. scan.setIncludes(new String[] ); //查找目錄(一、二級目錄);
4. scan.scan();
5. String dirs[]=scan.getIncludedDirectories();
6. scan.setIncludes(new String[]); //查找文件
7. scan.scan();
8. String files[]=scan.getIncludedFiles();

 

(轉自:http://www.chinaaet.com/article/9809

 

發佈了70 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章