转载:JAVA 操作 Ant API
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的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 指令重排序所带来的问题及使用volati
- 下一篇: TypeError: CleanWebp
