我正在尝试设置从一个SFTP位置到另一个SFTP位置的路由,移动文件(而不是复制)。如果源文件具有相同的名称,我想阻止目标文件被覆盖。
我的路线目前看起来像这样:
from("sftp://camel@server1/Source?password=camel&delete=true").to("sftp://camel@server2/Target?password=camel");
我的问题是Source中一个与前一个文件同名的新文件将覆盖server2中的目标文件。如果目标已存在,我如何告诉Camel给目标一个新名称?
谢谢!
答案 0 :(得分:0)
来自File Component FileExist
如果文件已存在且名称相同,该怎么办?可以指定以下值:覆盖,附加,失败,忽略和移动。覆盖(默认值)将替换现有文件。追加将内容添加到现有文件。失败抛出 GenericFileOperationException ,表示已存在现有文件。忽略静默忽略问题并且不覆盖现有文件,但假设一切正常。 Move选项需要 Camel 2.10.1 以及相应的 moveExisting 选项。选项 eagerDeleteTargetFile 可用于控制移动文件时要执行的操作,并且已存在现有文件,否则会导致移动操作失败。在写入目标文件之前,Move选项将移动任何现有文件。
所以你可以抛出异常并抓住它并用不同的名字移动它。