2016-08-18 48 views

回答

1

好像使用File::lastModified()一個文件夾並遍歷很容易進入File::listFiles()

public static void main(String[] args) { 
    final String folder = "D:\\Users\\tmp"; 
    final File file = new File(folder); 

    long lastModified = Long.MAX_VALUE; 
    for (File f : file.listFiles()) { 
     if (f.lastModified() < lastModified) 
      lastModified = f.lastModified(); 
    } 

    SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); 
    System.out.println("Oldest is " + sdf.format(lastModified)); 
} 

在我tmp文件夾:

data.csv  08/08/2016 
data.json 28/07/2016 
index.html 17/06/2016 
map.csv  29/07/2016 

輸出:

Oldest is 06/17/2016 09:53:10 
+0

此解決方案看起來正確...我們如何使用Apache駱駝來做同樣的事情。 –

3

你可以按時間戳排序文件,然後告訴駱駝只拾取一個文件。

sortBy=file:modified&eagerMaxMessagesPerPoll=false&maxMessagesPerPoll=1 

您還需要轉向eager max消息。請參閱文件2文檔中的更多詳細信息,這些選項:http://camel.apache.org/file2

如果從一個文件目錄與

from("file:...") 

那麼你也需要考慮如何處理其處理後的文件做費時,應該把它被刪除/保持原樣(例如noop)。例如,如果您刪除該文件,那麼Camel將在下一個輪詢中拾取第二個最後修改的文件,依此類推。

如果您需要刪除所有文件,那麼恐怕駱駝並沒有開箱即用,您可能需要編寫一些邏輯來刪除所有這些文件。