2012-05-24 17 views
15

Karınca (sürüm 1.6.5) geçici bir dizin oluşturmak ve onu bir özelliğe vermek istiyorum.Karıncada geçici dizin nasıl oluşturulur?

  • komut "mktemp'in -d" Bunun için ideal olacaktır, ama ben görünüşte sadece yaratır tempfile task dışında dokümanlar herhangi resmi fonksiyonu bulamıyor karınca
  • içinden benzer işlevler bulamıyorum dosyalar, dizinler değil.
  • Temp dosyasını aramak ve sonuç almak için exec kullanıyorum, ancak bu benim build.xml 'i UNIX/linux' a bağımlı kılmaktan kaçınmak istiyorum.

Arka plan: Ağa bağlı dosya sisteminde yerleşik olarak varolan bir oluşturma işlemini hızlandırmaya çalışıyorum. Yapı zaten tüm kaynağı geçici bir dizine kopyalar, ancak bu aynı dosya sistemindedir. Bunu/tmp/foo olarak değiştirmeyi test ettim ve buna değer bir hız artışı sağladı: 3mins vs 4mins.

cevap

22

Geçici bir dir oluşturmak için kullanılacak bir dosya yolunu almak için java.io.tmpdirsystem property ile tempfile task birleştirmek olabilir:

<project default="test"> 

    <target name="test"> 
     <echo>${java.io.tmpdir}</echo> 
     <tempfile property="temp.file" destDir="${java.io.tmpdir}" prefix="build"/> 
     <echo>${temp.file}</echo> 
    </target> 

</project> 

tempfile görev dosyası oluşturmak etmediğini Not (sen istemedikçe) . Sadece bir dosya veya dir oluşturmak için kullanabileceğiniz bir özellik ayarlar.

Bu görev, bir özelliği geçici bir dosya adına ayarlar. java.io.File.createTempFile uygulamasının aksine, bu görev aslında geçici dosyasını oluşturmaz, ancak görevin yürütüldüğü zaman dosyanın yürütüldüğünü garanti etmez. Benim ortamda

Çıktı:

test: 
    [echo] C:\Users\sudocode\AppData\Local\Temp\ 
    [echo] C:\Users\sudocode\AppData\Local\Temp\build1749402932 
-1

yalnızca yukarıda cevabı geçici bir dizin oluşturma ipuçları. Asıl nokta sadece bir dizge döndürmektir. Daha eksiksiz bir yanıt,

<target name="temptest" description="test making tempdir"> 
    <tempfile property="mytempdir" destdir="${java.io.tmpdir}"/> 
    <tempfile property="mytempfile" destdir="${mytempdir}"/> 
    <tstamp> 
     <format property="now" pattern="MMMM dd yyyy"/> 
    </tstamp> 
    <copy tofile="${mytempfile}"> 
     <string value="today=${now}"/> 
    </copy> 
    <property file="${mytempfile}"/> 
    <echo message="It it now ${today}"/> 
</target>    
İlgili konular