有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (4) 个答案

  1. # 1 楼答案

    检查Camel的File Language。看起来file:modified应该能帮到你

  2. # 2 楼答案

    您可以按时间戳对文件进行排序,然后告诉Camel仅拾取1个文件

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

    您还需要打开“急切max”消息。{a1}有关这些选项的更多详细信息,请参见文件2中的^

    如果您正在从文件目录中使用

    from("file:...")
    

    您还需要考虑文件处理后的处理,如果它被删除/保留(如NOOP)。例如,如果删除该文件,则Camel将在下次轮询时仅拾取最后修改的第二个文件,依此类推

    如果您需要删除所有文件,那么我恐怕Camel没有现成的文件,您可能需要自己编写一些逻辑来删除所有这些文件

  3. # 3 楼答案

    在文件夹上使用^{}并循环到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
    
  4. # 4 楼答案

    您可以使用Camel中的过滤器实现Jordi Castilla提供的方法。见以下文件: http://camel.apache.org/file2.html 请参阅“使用过滤器”一节