如果上次修改日期超过一定时间,我怎么能告诉Camel只复制文件?

时间:2014-02-07 18:32:07

标签: java apache-camel

我想知道Apache Camel是否可以实现这一目标。我想做的是让Camel查看文件目录,并仅复制“Last Modified”日期比某个日期更新的那些。例如,仅复制在2014年2月7日之后修改的文件。基本上我想在每次Camel运行时更新“上次运行日期”的变量,然后检查文件是否在上次运行后被修改。

我想在文件上使用实际的时间戳,而不是Camel提供的任何东西...我的理解是Camel中有一个不推荐使用的方法,用于在Camel查看文件时标记文件,然后这样做让您知道它们是否已经处理过。但是这个功能已被弃用,所以我需要一个替代方案。

Apache建议在处理后移动或删除文件,以了解文件是否已被处理,但这不是我的选择。有任何想法吗?提前谢谢。

已解决(2014-02-10):

import java.util.Date;

import org.apache.camel.builder.RouteBuilder;

public class TestRoute extends RouteBuilder {

    static final long A_DAY = 86400000;

    @Override
    public void configure() throws Exception {

        Date yesterday = new Date(System.currentTimeMillis() - A_DAY);

        from("file://C:\\TestOutputFolder?noop=true").
            filter(header("CamelFileLastModified").isGreaterThan(yesterday)).
            to("file://C:\\TestInputFolder");

    }

}

不需要XML配置。感谢下面的答案。

2 个答案:

答案 0 :(得分:1)

看一下Camel的File Language。看起来file:modified可能就是您要找的东西。

答案 1 :(得分:1)

是的,您可以实现过滤器,如果要包含该文件,则返回true | false。在该逻辑中,您可以检查文件修改并查看文件是否超过X天等。

请参阅

中的Camel文档文档

查找过滤器选项,例如,您实现org.apache.camel.component.file.GenericFileFilter接口的位置。