骆驼文件组件:创建文件,如果已经存在,请将其移动并使用时间戳进行重命名

时间:2019-02-26 16:58:45

标签: java file apache-camel

我正在使用Camel 2.17,我想生成一个文件。 如果该文件已经存在,我想将现有文件移动到另一个文件夹中,并为移动的文件添加时间戳。

这是我使用的代码:

from("activemq:queue:MYQUEUE")
.toD("file:/opt/data/out?"
 + "fileName=toto.txt"
 + "&fileExist=Move"
 + "&moveExisting=issue/${date:now:yyyyMMdd_HHmmss_}${file:onlyname}");

预期的行为
在以下位置创建的文件:/opt/data/out/issue/20190226_162001_toto.txt

获得的行为
文件创建于:/opt/data/out/issue/20190226_163226_\toto.txt
子目录20190226_163226_已创建。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

这是我的问题的解决方案:

只需将.toD("file")替换为.to("file") 现在可以了

答案 1 :(得分:0)

在这种情况下,ShopGlobalVariables.dismissCounter和文件组件可能有点问题/错误。但是,在此用例中,您不应使用toD,因为文件组件已经通过 to 支持了。由于self.itemAnimationImage.transform = .identity选项接受简单表达式并对此有特殊支持。

更新:好的,实际上它是按设计的,因为您使用的是toD,则首先评估端点moveExisting,然后在文件生产者读取此值时,将其视为静态值,默认情况下,它将自动采用其文件夹名称(这是这些选项的工作方式),并因此将其创建为文件夹而不是最终文件名。