2014-03-03 60 views
0

我有一個計時器,每小時查看一個特定的目錄並提取該目錄的內容進行處理。要刪除24小時重複,我試圖找出一種方法,只拉'新'文件進行處理。 (「新」超過24小時)。用Java獲取目錄中的新文件

一種選擇是編寫自定義比較器,但我一直在尋找其他方法。

想法的想法?

+3

在http://docs.oracle.com/javase/tutorial/essential/io/notification.html – 2014-03-03 14:33:18

+0

看看一個完整的示例,https://stackoverflow.com/questions/21310838/java-watchservice-file-lastmodified-returns-0/21315743#21315743 – vzamanillo

回答

0

我相信我找到了我一直在尋找與公共-10:

Calendar cal = Calendar.getInstance(); 
cal.add(Calendar.DAY_OF_MONTH, 1 * -1); 
Date yesterday = cal.getTime(); 
System.out.println(yesterday);  

// Test for newer files (2nd param [false] = get newer files)   
String[] files = dir.list(new AgeFileFilter(yesterday,false)); 
for (int i = 0; i < files.length; i++) { 
    System.out.println(files[i]); 
} 
0

將文件路徑散列到地圖,並使用它存儲第一次遇到它的時間。

+0

他們不會失去他們每次重新啓動服務時已處理的文件列表嗎? – BrianC

+0

好吧,沒有提及任何類型的服務將會重新啓動,或者這個程序運行在什麼樣的環境中,所以我提供了一個可以構建的裸機解決方案。 – NESPowerGlove

1

爲了避免文件系統時間戳差異的問題,我只需將其放在一個名爲「processed」的文件夾中,然後移動您在那裏完成的文件。這樣你就可以閱讀所有的文件。