答案 0 :(得分:4)
您可以按时间戳对文件进行排序,然后告诉Camel只提取1个文件。
sortBy=file:modified&eagerMaxMessagesPerPoll=false&maxMessagesPerPoll=1
您还需要关闭热切的最大消息。有关这些选项,请参阅file2文档中的更多详细信息:http://camel.apache.org/file2
如果您使用
从文件目录中消费from("file:...")
然后你还需要考虑如何处理文件,如果它被删除/保持原样(例如noop)。例如,如果您删除该文件,那么Camel将在下次轮询时拾取第二个修改后的文件,依此类推。
如果你需要删除所有文件,那么恐怕Camel没有开箱即用,你可能需要写一些自己删除所有文件的逻辑。
答案 1 :(得分: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
答案 2 :(得分:0)
您可以使用Camel中的过滤器实现Jordi Castilla提供的方法。请参阅此处的doc: http://camel.apache.org/file2.html 请参阅有关使用过滤器的部分。
答案 3 :(得分:0)
检查Camel&#39; File Language。看起来file:modified
可以帮助您