2011-07-14 37 views
14

thể trùng lặp:
Ant task to check if a file exists?Kiểm tra các tập tin tồn tại trong kiến ​​

Làm thế nào người ta có thể kiểm tra xem một tập tin tồn tại trong một thư mục, nếu không sử dụng một tập tin ở vị trí khác nhau. Tôi đã thử làm theo nhưng không giúp tôi với những gì tôi muốn. Ai đó có thể giúp đỡ?

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

Trả lời

21

Sử dụng kiểm tra điều kiện để thiết lập xem tệp có hiện diện hay không. Sau đó, có mục tiêu cho từng điều kiện thực sự

<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

Nếu bạn không nhớ sử dụng ant-contrib bạn có thể lấy cách tiếp cận thủ tục như thế này:

<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> 

Nếu không, bạn có thể có thể sử dụng một mục tiêu đó là có điều kiện về tài sản được thiết lập để chỉ ra cho dù tệp đã tồn tại ở vị trí ưa thích, chẳng hạn như Ant task to run an Ant target only if a file exists? nhưng sử dụng unless thay vì if.

+0

Cảm ơn bạn đã trả lời cả hai tệp và nếu tệp đầu tiên không tồn tại tức là/home/doc/somefile thì chúng tôi có thể sao chép thư thứ hai vào thư mục đó. – user87636

+0

chúng tôi kiểm tra cả hai tệp và nếu tệp đầu tiên không tồn tại tức là/home/doc/somefile thì chúng ta có thể sao chép tệp thứ hai vào thư mục đó. Ví dụ . Điều này có vẻ không hoạt động. – user87636

+0

Cảm ơn Mark và Ben. Tôi cố gắng tìm ra giải pháp từ những ý tưởng tôi nhận được từ các bạn – user87636

Các vấn đề liên quan