20.5. 移动和删除操作
所有移动或删除操作都会在路由完成后执行(post 命令),因此在处理该文件的过程中,该文件仍然位于 inbox 文件夹中。
让我们以示例进行说明:
from("file://inbox?move=.done").to("bean:handleOrder");
当文件 inbox
文件夹中丢弃时,文件使用者会注意到此文件,并创建一个新的 FileExchange
,以路由到 handleOrder
bean。然后,bean 处理 File
对象。此时,该文件仍位于 inbox 文件夹中
。在 bean 完成后,路由完成后,文件使用者将执行移动操作并将文件移动到 .done
子文件夹。
移动和 preMove 选项被视为目录名称(虽然您使用文件语言等表达式,或者 简单 ),则使用表达式评估的结果。https://access.redhat.com/documentation/en-us/red_hat_integration/2022.q3/html-single/camel_spring_boot_reference/index#csb-camel-file-language-starter例如,如果您设置了:
move=../backup/copy-of-${file:name}
然后,使用我们使用的文件语言返回要使用的文件名,可以是相对或绝对的。https://access.redhat.com/documentation/en-us/red_hat_integration/2022.q3/html-single/camel_spring_boot_reference/index#csb-camel-file-language-starter如果相对,就会在文件被消耗的 文件夹中创建为子文件夹。
默认情况下,Camel 将消耗的文件移动到与使用该文件的目录中相关的 .camel
子文件夹。
如果要在处理后删除文件,路由应该是:
from("file://inbox?delete=true").to("bean:handleOrder");
我们 已预先 移动操作,以便在处理文件 之前 对其进行移动。这样,您可以在处理前标记哪些文件已被扫描,它们被移到这个子文件夹。
from("file://inbox?preMove=inprogress").to("bean:handleOrder");
您可以组合 前 移动和常规移动:
from("file://inbox?preMove=inprogress&move=.done").to("bean:handleOrder");
因此,在处理和处理后,该文件位于 inprogress
文件夹中,被移到 .done
文件夹中。