32.6. 移动和删除操作


在(post 命令)路由完成后执行任何移动或删除操作;因此,在处理 交换 时,该文件仍然位于 inbox 文件夹中。

我们通过一个示例来说明这一点:

from("file://inbox?move=.done").to("bean:handleOrder");
Copy to Clipboard Toggle word wrap

当在 inbox 文件夹中丢弃文件时,文件消费者会注意到它,并创建一个新的 FileExchange,它路由到 handleOrder bean。然后 bean 会处理 File 对象。此时,该文件仍然位于 inbox 文件夹中。在 bean 完成后,路由完成后,文件消费者将执行 move 操作,并将文件移到 .done 子文件夹。

movepreMove 选项被视为目录名称(但是如果您使用表达式,如 文件 语言)或 Simple,则使用表达式评估的结果是要使用的文件名。例如,如果设置了:

move=../backup/copy-of-${file:name}
Copy to Clipboard Toggle word wrap

然后,这是使用的文件语言,该语言返回要使用的文件名,可以是相对或绝对文件。https://access.redhat.com/documentation/zh-cn/red_hat_build_of_apache_camel/4.0/html-single/red_hat_build_of_apache_camel_for_spring_boot_reference/index#csb-camel-file-language-starter如果相对,则该目录作为子文件夹创建自使用该文件的文件夹内。

默认情况下,Camel 会将消耗的文件移动到相对于文件被消耗的目录的 .camel 子文件夹。

如果要在处理后删除文件,路由应该是:

from("file://inbox?delete=true").to("bean:handleOrder");
Copy to Clipboard Toggle word wrap

我们引入了一个 预先 移动操作,以便在文件被处理 移动文件。这可让您在处理前标记哪些文件已被扫描,因为它们被移动到此子文件夹中。

from("file://inbox?preMove=inprogress").to("bean:handleOrder");
Copy to Clipboard Toggle word wrap

您可以组合 预先 移动和常规移动:

from("file://inbox?preMove=inprogress&move=.done").to("bean:handleOrder");
Copy to Clipboard Toggle word wrap

因此,在这种情况下,当处理和处理后,文件位于 progress 文件夹中,它会移到 .done 文件夹。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部