23.21. 写入文件
Camel 也能够编写文件,即生成文件。在以下示例中,我们将在将进程写入目录前收到有关 SEDA 队列的一些报告。
23.21.1. 使用 Exchange.FILE_NAME写入子目录 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
通过使用单个路由,可以将文件写入任意数量的子目录。如果您有路由设置,如下所示:
<route> <from uri="bean:myBean"/> <to uri="file:/rootDirectory"/> </route>
<route>
<from uri="bean:myBean"/>
<to uri="file:/rootDirectory"/>
</route>
您可以将 header Exchange.FILE_NAME
设置为值,例如:
Exchange.FILE_NAME = hello.txt => /rootDirectory/hello.txt Exchange.FILE_NAME = foo/bye.txt => /rootDirectory/foo/bye.txt
Exchange.FILE_NAME = hello.txt => /rootDirectory/hello.txt
Exchange.FILE_NAME = foo/bye.txt => /rootDirectory/foo/bye.txt
这可让您有一个路由来将文件写入多个目的地。
23.21.2. 通过相对于最终目的地的临时目录写入文件 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
有时您需要临时将文件写入相对于目标目录的一些目录。当某些具有有限过滤功能的外部进程是从您要写入的目录中读取时,通常会发生这种情况。在以下示例中,文件将写入 /var/myapp/filesInProgress
目录,并在进行数据传输后,将以原子方式移到' /var/myapp/finalDirectory 'directory。
from("direct:start"). to("file:///var/myapp/finalDirectory?tempPrefix=/../filesInProgress/");
from("direct:start").
to("file:///var/myapp/finalDirectory?tempPrefix=/../filesInProgress/");