2011-06-10 85 views
1

我需要根據名稱找到文件的年齡。所有這些文件都遵循這樣的命名約定:DD-MM-YYYY。Java中的文件年齡

我可以製作一個程序,根據多少天/月過去等等,使用模數運算符來創建文件名,但我似乎無法包圍我的頭圍繞如何計算年齡從名稱。歡迎提供任何提示。

任何codesamples/-suggestions最好用Java。

問候 馬丁

+1

您可以從文件名部分提取日期和日期,並使用SimpleDateFormat解析它。 – 2011-06-10 13:24:24

+0

將文件創建日期和當前日期存儲在java.util.Date對象中,然後可以輕鬆減去兩者以瞭解文件的年齡。 – Pepe 2011-06-10 13:25:48

回答

7

您可以使用日期格式來解析日期以及格式之一。

未經測試:

String name = file.getName(); 
String datePortion = /*extract date portion*/; 

DateFormat fmt = new SimpleDateFormat("dd-MM-yyyy"); 
Date fileDate = fmt.parse(datePortion); 
long msBetweenDates = new Date().getTime() - fileDate.getTime(); 

你如何提取日期部分取決於你的文件命名方案,但它可能是那麼容易,因爲:

String datePortion = name.replaceAll(".*((\\d)+-(\\d)+-(\\d)+).*", "$1"); 
+0

我想我已經設法使它像這樣工作,我只需要一種比較六個月的方式,因爲六個月以毫秒爲單位變成了一個大數字,並且殺死了整數上限。 – Martinnj 2011-06-10 13:43:19

+0

@Martin:它可能會吹出一個int的界限,但是你會看到我使用了一個很長的應該沒有問題的東西。 – 2011-06-10 14:25:27

1

如果最後修改日期是不夠的,你可以使用:

File file = new File("C:/file.txt"); 
    Date date = new Date(file.lastModified()); 
    System.out.println(date); 
+1

我試過這個,但它不可用,因爲文件可以隨時修改,過濾器需要看看它們是什麼時候創建的。但是,謝謝。 – Martinnj 2011-06-10 13:48:36