首页 > 解决方案 > 读取文件时,如何使用 apache Camel 将输入设置为字符串而不是 filePath

问题描述

我尝试定义一个名为 source 的字符串,它保存了我希望从中传输文件的路径。这是我的代码示例:

String currentDate = sdf.format(date);
String source = "C:\\files\\" + currentDate;
context.addRoutes(new RouteBuilder() {
            @Override
            public void configure() throws Exception {

                from("file:source?noop=true")

所以,我基本上想做的是:每天都会在以当前日期命名的特定位置创建一个新文件夹(例如:20191001,20190930),这就是 currentDate 字符串的用途。当我放置特定文件路径(from("file:C:\everything for java\moveInValidFiles\files\20191001?noop=true") )而不是源代码时,代码可以工作,但为此我想使用一个包含自从每天我得到新文件夹以来的路径。无论如何我可以做到这一点吗?

标签: javaapacheapache-camel

解决方案


如何将输入设置为字符串而不是文件路径的(部分)

以java方式思考。将其视为 java 变量而不是纯字符串。

String currentDate = sdf.format(date);
String source = "C:\\files\\" + currentDate;
context.addRoutes(new RouteBuilder() {
    @Override
    public void configure() throws Exception {
        from("file:" + source + "?noop=true")

如何从每天创建的具有特定命名模式的目录中收集文件

文件使用者(from 部分)在路由创建时设置一次,并且永远使用,直到路由被销毁。所以,你可以有以下方法

  1. 每天都有自己的机制来重新创建路由(使用不同的目录路径)
  2. 使用Camel File Component查询参数filterDirectory (例如"file:C:\\files?noop=true&filterDirectory=${date:now:yyyyMMdd}"

推荐阅读