4.5 Copy Task:對文件和目錄進(jìn)行復(fù)制Copy 任務(wù)把一個或多個文件復(fù)制到指定的目錄下。但要注意的是,如果目標(biāo)目錄下具有同名的文件,那么只有當(dāng)源文件相對于目標(biāo)文件更新時,Ant工具才會復(fù)制這個文件。在Copy任務(wù)中可以使用FileSet類型來定義文件集合。 4.5.1 Copy Task的屬性及功能Copy 任務(wù)具有以下屬性: (1)file:用于指定要復(fù)制的源文件。 (2)preservelastmodified:作用是使得復(fù)制后的文件與源文件的最后修改時間相同。默認(rèn)為false。 (3)tofile:用于指定要復(fù)制到的文件。 (4)todir:用于指定要復(fù)制到的目標(biāo)目錄。todir和tofile只能使用其中一個屬性。 (5)overwrite:用于指定是否需要覆蓋目錄和文件,不管文件是否比源文件新,都會覆蓋。默認(rèn)為false。 (6)filtering:用于指定在復(fù)制時是否使用構(gòu)件文件的全局過濾器對文件進(jìn)行過濾。默認(rèn)為false。 (7)flatten:用于指定是否需要復(fù)制目錄,如果為true代表把所有的文件復(fù)制到todir屬性設(shè)定的目錄下。默認(rèn)為false,復(fù)制目錄。 (8)includeEmptyDirs:用于指定是否復(fù)制空目錄。默認(rèn)為true。 (9)failonerror:用于指定當(dāng)遇到錯誤時是否停止執(zhí)行。默認(rèn)為true。 (10)verbose:用于指定當(dāng)復(fù)制文件時是否記錄日志信息。 (11)encoding:用于設(shè)定復(fù)制文件時的編碼或文件過濾器使用的編碼方式。默認(rèn)時使用Java虛擬機(jī)的編碼方式。 (12)outputencoding:指定寫文件時的編碼方式。默認(rèn)時使用Java虛擬機(jī)的編碼方式。 (13)enablemultiplemappings:用于設(shè)定是否允許多個映射。默認(rèn)為false。 (14)granularity:用于指定一個文件修改時間的毫秒數(shù)據(jù)的允許誤差。因為不是所有的文件系統(tǒng)的修改時間都是精確到毫秒數(shù)。默認(rèn)時為0,如果為DOS系統(tǒng)則為2。 4.5.2 通過Copy Task實現(xiàn)文件和目錄復(fù)制功能實例不管是對程序進(jìn)行打包還是一般的文件操作,基本上都離不開復(fù)制功能。通過Ant工具的Copy任務(wù)可以讓程序在Windows和Linux/UNIX下對文件和目錄進(jìn)行復(fù)制操作。例如: (1)對單個文件進(jìn)行復(fù)制: <copy file="myfile.txt" tofile="mycopy.txt"/> 這個例子的作用是在當(dāng)前目錄復(fù)制myfile.txt,并把復(fù)制的文件命名為mycopy.txt。當(dāng)需要把文件復(fù)制到別外的目錄時可以這樣編寫: <copy file="myfile.txt" todir="../some/other/dir"/> 這個例子的作用是把文件復(fù)制到與當(dāng)前目錄同級的some目錄的/other/dir子目錄下。這里“..”代表相對路徑(當(dāng)前目錄的上一級目錄)。 (2)對文件目錄進(jìn)行復(fù)制: <copy todir="../new/dir"> <fileset dir="src_dir"/> </copy> 這個例子的作用是把src_dir目錄復(fù)制到../new/dir目錄下。有時對文件進(jìn)行復(fù)制時需要對文件進(jìn)行備份。下面舉一個復(fù)制文件時對文件進(jìn)行備份的例子。 <copy todir="../backup/dir"> <fileset dir="src_dir"> <exclude name="**/*.java"/> </fileset> <globmapper from="*" to="*.bak"/> </copy> 這個例子的作用是把src_dir目錄及其子目錄下所有非Java文件復(fù)制到../backup/dir目錄下,并重命名為bak文件,以作備份。 4.5.3 在執(zhí)行Copy Task時使用文件過濾的實例下面是一個復(fù)制文件的同時替換文件中的特殊符號的例子: <copy todir="../backup/dir"> <fileset dir="src_dir"/> <filterset> <filter token="TITLE" value="Foo Bar"/> </filterset> </copy> 這個例子的作用是把src_dir目錄下的所有文件復(fù)制到../backup/dir目錄,并在所有文件中查找并替換@TITLE@為Foo Bar。當(dāng)要進(jìn)行新產(chǎn)品發(fā)布時通過需要替換文件中的版本信息和時間信息。 說明:在Ant工具中還提供了copydir和copyfile這兩個特定的任務(wù),分別用于對目錄和文件進(jìn)行復(fù)制。但自從有了Copy任務(wù)后,這兩個任務(wù)已過期,不建議再使用,應(yīng)該統(tǒng)一使用Copy任務(wù)。 4.6 Delete Task:對文件和目錄進(jìn)行刪除Delete 任務(wù)可用于刪除一個或多個文件,或刪除一個或多個目錄和目錄下的文件。默認(rèn)時不會刪除空目錄,要刪除空目錄可以設(shè)定includeEmptyDirs屬性為true。在Delete任務(wù)中可以使用FileSet和DirSet類型。 4.6.1 Delete Task的屬性及功能Delete任務(wù)包括以下屬性: (1)file:用于指定要刪除的文件的名稱,可以為相對路徑或絕對路徑。 (2)dir:指定一個將要被刪除的根目錄。這個目錄下的子目錄及文件將可能被刪除。dir屬性和file屬性兩者必須指定其一。 (3)verbose:作用是指定是否在命令行中輸出被刪除的文件的名稱。默認(rèn)為false。 (4)quiet:作用是指定當(dāng)要被刪除的文件或目錄不存在時是否不顯示提示信息。默認(rèn)為false,代表要顯示提示信息。 (5)failonerror:用于指定當(dāng)出現(xiàn)錯誤時是否停止執(zhí)行命令。 (6)includeemptydirs:表明當(dāng)使用FileSet類型時是否刪除空的目錄。 (7)includes:用于指定將要刪除的文件或目錄的模式。可用逗號或空格符進(jìn)行分隔。 (8)includesfile:用于指定要刪除的文件的模式。已不建議使用。 (9)excludes:用于指定一個或多個文件模式或目錄模式。這些符合條件的文件和目錄將不被刪除。 (10)excludesfile:用于指定將不被刪除的文件模式,已不建議使用。 (11)defaultexcludes:用于指定是否使用Ant默認(rèn)的default excludes模式,已不建議使用。 (12)deleteonexit:用于指定是否采用Java File類中的deleteOnExit()方法進(jìn)行判斷,如果使用這個方法,那么僅當(dāng)存在文件時才進(jìn)行刪除,默認(rèn)取值為false。 4.6.2 在執(zhí)行Delete Task時使用文件過濾的實例(1)刪除單個文件的實例: <delete file="/lib/ant.jar"/> 這個例子的作用是刪除lib目錄下的ant.jar文件。 (2)刪除目錄的實例: <delete dir="lib"/> 這個例子的作用是刪除lib目錄,包括這個目錄的所有子目錄及文件,可以通過include或exclude類型指定刪除的部分文件,而不是目錄下的所有文件。 (3)刪除所有備份文件和空的目錄的例子: <delete includeEmptyDirs="true"> <fileset dir="." includes="**/*.bak"/> </delete> 這個例子的作用是刪除當(dāng)前目錄以及其子目錄下的所有.bak文件,同時也刪除所有空的目錄。 |
只有注冊用戶登錄后才能發(fā)表評論。 | ||
![]() |
||
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
|
||
相關(guān)文章:
|
||