1

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

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

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

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

谢谢!

4

1 回答 1

1

从文件组件FileExist

如果已存在同名文件怎么办。可以指定以下值:OverrideAppendFailIgnoreMove。覆盖是默认值,它替换现有文件。Append 将内容添加到现有文件。Fail 抛出一个GenericFileOperationException,表明已经存在一个文件。Ignore 会默默地忽略问题并且不会覆盖现有文件,而是假设一切正常。Move 选项需要Camel 2.10.1及更高版本,并且还需要配置相应的moveExisting选项。选项eagerDeleteTargetFile可用于控制在移动文件时执行的操作,并且已经存在现有文件,否则会导致移动操作失败。移动选项将在写入目标文件之前移动任何现有文件。

所以你可以抛出异常并捕获它并以不同的名称移动它。

于 2013-04-12T08:37:44.560 回答