沉睡森林@漂在北京

          本處文章除注明“轉載”外均為原創,轉載請注明出處。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            152 隨筆 :: 4 文章 :: 114 評論 :: 0 Trackbacks

          4.5 Copy Task:對文件和目錄進行復制

          Copy 任務把一個或多個文件復制到指定的目錄下。但要注意的是,如果目標目錄下具有同名的文件,那么只有當源文件相對于目標文件更新時,Ant工具才會復制這個文件。在Copy任務中可以使用FileSet類型來定義文件集合。

          4.5.1 Copy Task的屬性及功能

          Copy 任務具有以下屬性:

          (1)file:用于指定要復制的源文件。

          (2)preservelastmodified:作用是使得復制后的文件與源文件的最后修改時間相同。默認為false。

          (3)tofile:用于指定要復制到的文件。

          (4)todir:用于指定要復制到的目標目錄。todir和tofile只能使用其中一個屬性。

          (5)overwrite:用于指定是否需要覆蓋目錄和文件,不管文件是否比源文件新,都會覆蓋。默認為false。

          (6)filtering:用于指定在復制時是否使用構件文件的全局過濾器對文件進行過濾。默認為false。

          (7)flatten:用于指定是否需要復制目錄,如果為true代表把所有的文件復制到todir屬性設定的目錄下。默認為false,復制目錄。

          (8)includeEmptyDirs:用于指定是否復制空目錄。默認為true。

          (9)failonerror:用于指定當遇到錯誤時是否停止執行。默認為true。

          (10)verbose:用于指定當復制文件時是否記錄日志信息。

          (11)encoding:用于設定復制文件時的編碼或文件過濾器使用的編碼方式。默認時使用Java虛擬機的編碼方式。

          (12)outputencoding:指定寫文件時的編碼方式。默認時使用Java虛擬機的編碼方式。

          (13)enablemultiplemappings:用于設定是否允許多個映射。默認為false。

          (14)granularity:用于指定一個文件修改時間的毫秒數據的允許誤差。因為不是所有的文件系統的修改時間都是精確到毫秒數。默認時為0,如果為DOS系統則為2。

          4.5.2 通過Copy Task實現文件和目錄復制功能實例

          不管是對程序進行打包還是一般的文件操作,基本上都離不開復制功能。通過Ant工具的Copy任務可以讓程序在Windows和Linux/UNIX下對文件和目錄進行復制操作。例如:

          (1)對單個文件進行復制:

          <copy file="myfile.txt" tofile="mycopy.txt"/>

          這個例子的作用是在當前目錄復制myfile.txt,并把復制的文件命名為mycopy.txt。當需要把文件復制到別外的目錄時可以這樣編寫:

          <copy file="myfile.txt" todir="../some/other/dir"/>

          這個例子的作用是把文件復制到與當前目錄同級的some目錄的/other/dir子目錄下。這里“..”代表相對路徑(當前目錄的上一級目錄)。

          (2)對文件目錄進行復制:

          <copy todir="../new/dir">

              <fileset dir="src_dir"/>

          </copy>

          這個例子的作用是把src_dir目錄復制到../new/dir目錄下。有時對文件進行復制時需要對文件進行備份。下面舉一個復制文件時對文件進行備份的例子。

          <copy todir="../backup/dir">

          <fileset dir="src_dir">

              <exclude name="**/*.java"/>

             </fileset>

          <globmapper from="*" to="*.bak"/>

          </copy>

          這個例子的作用是把src_dir目錄及其子目錄下所有非Java文件復制到../backup/dir目錄下,并重命名為bak文件,以作備份。

          4.5.3 在執行Copy Task時使用文件過濾的實例

          下面是一個復制文件的同時替換文件中的特殊符號的例子:

          <copy todir="../backup/dir">

              <fileset dir="src_dir"/>

              <filterset>

                <filter token="TITLE" value="Foo Bar"/>

              </filterset>

          </copy>

          這個例子的作用是把src_dir目錄下的所有文件復制到../backup/dir目錄,并在所有文件中查找并替換@TITLE@為Foo Bar。當要進行新產品發布時通過需要替換文件中的版本信息和時間信息。

          說明:在Ant工具中還提供了copydir和copyfile這兩個特定的任務,分別用于對目錄和文件進行復制。但自從有了Copy任務后,這兩個任務已過期,不建議再使用,應該統一使用Copy任務。

          4.6 Delete Task:對文件和目錄進行刪除

          Delete 任務可用于刪除一個或多個文件,或刪除一個或多個目錄和目錄下的文件。默認時不會刪除空目錄,要刪除空目錄可以設定includeEmptyDirs屬性為true。在Delete任務中可以使用FileSet和DirSet類型。

          4.6.1 Delete Task的屬性及功能

          Delete任務包括以下屬性:

          (1)file:用于指定要刪除的文件的名稱,可以為相對路徑或絕對路徑。

          (2)dir:指定一個將要被刪除的根目錄。這個目錄下的子目錄及文件將可能被刪除。dir屬性和file屬性兩者必須指定其一。

          (3)verbose:作用是指定是否在命令行中輸出被刪除的文件的名稱。默認為false。

          (4)quiet:作用是指定當要被刪除的文件或目錄不存在時是否不顯示提示信息。默認為false,代表要顯示提示信息。

          (5)failonerror:用于指定當出現錯誤時是否停止執行命令。

          (6)includeemptydirs:表明當使用FileSet類型時是否刪除空的目錄。

          (7)includes:用于指定將要刪除的文件或目錄的模式。可用逗號或空格符進行分隔。

          (8)includesfile:用于指定要刪除的文件的模式。已不建議使用。

          (9)excludes:用于指定一個或多個文件模式或目錄模式。這些符合條件的文件和目錄將不被刪除。

          (10)excludesfile:用于指定將不被刪除的文件模式,已不建議使用。

          (11)defaultexcludes:用于指定是否使用Ant默認的default excludes模式,已不建議使用。

          (12)deleteonexit:用于指定是否采用Java File類中的deleteOnExit()方法進行判斷,如果使用這個方法,那么僅當存在文件時才進行刪除,默認取值為false。

          4.6.2 在執行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>

          這個例子的作用是刪除當前目錄以及其子目錄下的所有.bak文件,同時也刪除所有空的目錄。

          http://book.csdn.net/bookfiles/379/10037914215.shtml

          posted on 2009-06-14 18:22 王總兵 閱讀(2370) 評論(0)  編輯  收藏 所屬分類: Spring
          主站蜘蛛池模板: 千阳县| 鹤壁市| 凯里市| 衡南县| 西昌市| 宁蒗| 车致| 潞西市| 西华县| 奉贤区| 九台市| 仁怀市| 乐平市| 新晃| 德格县| 海宁市| 资中县| 河东区| 湘潭县| 泾川县| 仙游县| 社会| 鄂尔多斯市| 板桥市| 龙岩市| 汤阴县| 筠连县| 申扎县| 资中县| 饶平县| 宁南县| 平南县| 冕宁县| 信阳市| 诸暨市| 栾城县| 南充市| 定陶县| 融水| 文山县| 宁都县|