104.3. 移动和删除操作
所有移动或删除操作都会在(post 命令)完成后执行;因此在处理 Exchange
时,该文件仍然位于 inbox 文件夹中。
我们通过示例进行演示:
from("file://inbox?move=.done").to("bean:handleOrder");
当在 inbox
文件夹中丢弃文件时,文件使用者会注意到这个文件并创建一个新的 FileExchange
,它被路由到 handleOrder
bean。然后,an 会处理 File
对象。此时,该文件仍位于 inbox 文件夹中
。当 bean 完成后,因此路由已完成,文件使用者将执行移动操作并将文件移动到 .done
子文件夹。
移动和 preMove 选项被视为目录名称(尽管如果您使用了一个表达式,如文件 语言,或 简单 ),则表达式评估的结果是要使用的文件名 - 如您设置时
move=../backup/copy-of-${file:name}
然后,使用使用的文件 语言 返回要使用的文件名,可以是相对或绝对的。如果相对,目录会在使用该文件的文件夹内作为子文件夹创建。
默认情况下,Camel 将消耗的文件移动到相对于使用该文件的目录的 .camel
子文件夹。
如果要在处理后删除文件,则路由应该是:
from("file://inobox?delete=true").to("bean:handleOrder");
我们介绍了 在 处理文件 前 移动操作。这可让您在处理前标记哪些文件已经扫描到这个子文件夹。
from("file://inbox?preMove=inprogress").to("bean:handleOrder");
您可以组合 预 移动和常规移动:
from("file://inbox?preMove=inprogress&move=.done").to("bean:handleOrder");
因此,在处理后文件位于 in
progres 文件夹中,它被移到 .done
文件夹。