2011-07-14 136 views
14

可能重複存在的文件:
Ant task to check if a file exists?檢查螞蟻

一個如何檢查文件是否在目錄中存在,如果不使用在不同地點的另一個文件。我嘗試了以下,但沒有幫助我想要什麼。有人可以幫忙嗎?

<condition property="somefile.available"> 
    <or> 
     <available file="/home/doc/somefile"/> 
     <and> 
      <available file="/usr/local/somefile" /> 
     </and> 
    </or> 
</condition> 

回答

21

使用條件測試來確定文件是否存在。然後,對每個真實的情況

<target name="go" depends="file-checks, do-something-with-first-file, do-something-with-second-file"/> 

<target name="file-checks"> 
    <available file="/home/doc/somefile" property="first.file.found"/> 
    <available file="/usr/local/somefile" property="second.file.found"/> 
</target> 

<target name="do-something-with-first-file" if="first.file.found"> 
    ??? 
</target> 

<target name="do-something-with-second-file" if="second.file.found"> 
    ??? 
</target> 
12

如果你不介意使用螞蟻的contrib您可以採取的處理方式是這樣的:

<if> 
    <available file="file1"/> 
    <then> 
     <property name="file.exists" value="true"/> 
    </then> 
    <else> 
     <if> 
     <available file="file2"/> 
     <then> 
      <copy file="file2" tofile="file1"/> 
      <property name="file.exists" value="true"/> 
     </then> 
     </if> 
    </else> 
    </if> 

否則,你也許可以使用一個目標是上一個屬性條件設定爲指示文件是否已存在於首選位置,如Ant task to run an Ant target only if a file exists?,但使用unless而不是if

+0

奔感謝您reply.Actually目標我想達到的是,我們檢查這兩個文件,如果第一個文件不存在,即/家庭/ DOC/somefile那麼我們就可以將第二個複製到該目錄。 – user87636

+0

我們檢查兩個文件,如果第一個文件不存在,即/ home/doc/somefile,那麼我們可以將第二個文件複製到該目錄。例如。這似乎不起作用。 – user87636

+0

感謝馬克和本。我設法從我們的想法中得出一個解決方案 – user87636