2011-05-26 41 views
0

我正在與mqfte合作。在將文件傳輸到目標文件後,我必須創建一個與源文件具有相同名稱的空txt文件。如何使用ant腳本來做到這一點?如何使用ant腳本在分佈式系統中創建文件?

場景:

Srcpath:\ SRC \ TEST.DAT destpath:\ DEST \ TEST.DAT

文件後從SRC路徑移動,我需要創建一個空文件TEST.DAT在使用ant腳本的src路徑中?如何才能做到這一點?

回答

1

在傳輸文件之前,可以使用Touch任務在臨時目錄中創建與將要傳輸的文件(重複使用相同的文件集)相匹配的新空文件。傳輸完成後,您可以使用Move任務將空文件複製到您的src目錄中。您可以在Move任務中使用overwrite =「false」來確保保留在src目錄中的文件不會被替換(例如,如果您想確保只有空文件才能成功傳輸)。

這裏是一個例子。

<project default="test"> 

    <target name="test"> 

    <touch> 
     <fileset dir="src"> 
     <include name="test*"/> 
     </fileset> 
     <mapper type="regexp" from="(.*)" to="tmp/\1"/> 
    </touch> 

    <move todir="dest"> 
     <fileset dir="src"> 
     <include name="test*"/> 
     <!-- simulate file not transferred --> 
     <exclude name="test.doc"/> 
     </fileset> 
     <globmapper from="test.*" to="result_*.txt"/> 
    </move> 


    <move todir="src" overwrite="false"> 
     <fileset dir="tmp"/> 
    </move> 

    </target> 

</project> 

第一步代表您的轉移。一個文件(test.doc)不會移出src目錄(模擬失敗的傳輸)。您可以測試是否在src目錄中創建了包含一些內容的文件。目標完成後,test.doc仍應具有其原始內容。其他文件應該是空的。

針對你對正則表達式映射問題:

<mapper type="regexp" from="(.*)" to="tmp/\1"/> 

這整個輸入文件名的捕獲到一組...

from="(.*)" 

,並預置「TMP /」來被捕獲的組...

to="tmp/\1" 

(在正則表達式中\1指的是第一個capt在表達中ured組。 )

因此,從src/somefile.txt開始,我們將somefile.txt作爲映射器的輸入文件,我們將其轉換爲tmp/somefile.txt

+0

謝謝Sudocode !!!!!!!! – trilawney 2011-05-27 09:58:29

+0

在觸摸任務中,(to =「tmp/\ 1)參數是幹什麼用的?你能解釋一下嗎...在apache站點不清楚... – trilawney 2011-05-31 10:02:55

+0

非常感謝!!!!!!! !!!!!! – trilawney 2011-06-06 07:49:02