それはあなたのOSに依存します、feUnixはファイル作成時間を保存しません、ここで詳細を見てください
2つの可能な解決策:
解決策1は、Java>=6のWindowsでのみ機能します。アドオンは必要ありません。
<project>
<!-- Works on Windows only, uses the jdk builtin
rhino javascript engine (since jdk6)
use dir command without /T:C to get lastmodificationtime
-->
<macrodef name="getFileTimes">
<attribute name="dir" />
<attribute name="file" />
<attribute name="setprop" default="@{file}_ctime" />
<sequential>
<exec executable="cmd" dir="@{dir}" outputproperty="@{setprop}">
<arg value="/c" />
<arg line="dir @{file} /T:C|find ' @{file}'" />
</exec>
<script language="javascript">
tmp = project.getProperty("@{setprop}").split("\\s+") ;
project.setProperty("@{setprop}", tmp[0] + "/" + tmp[1]) ;
</script>
</sequential>
</macrodef>
<getFileTimes dir="C:/tmp" file="bookmarks.html" />
<echo>
$${bookmarks.html_ctime} => ${bookmarks.html_ctime}
</echo>
</project>
ソリューション2には、Java 7とgroovy-all-xxxjar(groovyバイナリリリースに含まれています)が必要です。SimpleDateFormat
を好みに合わせて調整します。
Unixファイルシステムでは、作成時間を要求すると、最終変更時刻が取得されます。
<project>
<taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy"/>
<!-- Solution for Java 7, uses the nio package
needs groovy-all-2.1.0.jar
-->
<macrodef name="getFileTimes">
<attribute name="file"/>
<attribute name="ctimeprop" default="@{file}_ctime"/>
<attribute name="mtimeprop" default="@{file}_mtime"/>
<sequential>
<groovy>
import java.nio.file.*
import java.nio.file.attribute.*
import java.text.*
import java.util.date.*
Path path = Paths.get("@{file}")
BasicFileAttributeView view = Files.getFileAttributeView(path, BasicFileAttributeView.class)
BasicFileAttributes attributes = view.readAttributes()
lastModifiedTime = attributes.lastModifiedTime()
createTime = attributes.creationTime()
DateFormat df = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss", Locale.US)
df.format(new Date(createTime.toMillis()))
properties.'@{ctimeprop}' = df.format(new Date(createTime.toMillis()))
properties.'@{mtimeprop}' = df.format(new Date(lastModifiedTime.toMillis()))
</groovy>
</sequential>
</macrodef>
<getFileTimes file="C:/tmp/bookmarks.html"/>
<echo>
$${C:/tmp/bookmarks.html_ctime} => ${C:/tmp/bookmarks.html_ctime}
$${C:/tmp/bookmarks.html_mtime} => ${C:/tmp/bookmarks.html_mtime}
</echo>
</project>
組み込みのJavaScriptエンジンも使用してみましたが、次のようなエラーが発生しました。
sun.org.mozilla.javascript.internal.EvaluatorException: missing name after . operator
IMO、javascriptを使用した単純なもの<script language="javascript">
で十分ですが、javaパッケージなどをインポートする必要がある場合は、PITAです。Groovyは単純に機能します。