Apache Camel:重命名(S)FTP目标文件以防止覆盖

时间:2013-04-12 08:29:51

标签: java apache-camel

我正在尝试设置从一个SFTP位置到另一个SFTP位置的路由,移动文件(而不是复制)。如果源文件具有相同的名称,我想阻止目标文件被覆盖。

我的路线目前看起来像这样:

from("sftp://camel@server1/Source?password=camel&delete=true").to("sftp://camel@server2/Target?password=camel");

我的问题是Source中一个与前一个文件同名的新文件将覆盖server2中的目标文件。如果目标已存在,我如何告诉Camel给目标一个新名称?

谢谢!

1 个答案:

答案 0 :(得分:0)

来自File Component FileExist

  

如果文件已存在且名称相同,该怎么办?可以指定以下值:覆盖附加失败忽略移动。覆盖(默认值)将替换现有文件。追加将内容添加到现有文件。失败抛出 GenericFileOperationException ,表示已存在现有文件。忽略静默忽略问题并且不覆盖现有文件,但假设一切正常。 Move选项需要 Camel 2.10.1 以及相应的 moveExisting 选项。选项 eagerDeleteTargetFile 可用于控制移动文件时要执行的操作,并且已存在现有文件,否则会导致移动操作失败。在写入目标文件之前,Move选项将移动任何现有文件。

所以你可以抛出异常并抓住它并用不同的名字移动它。