24.12. 使用本地工作目录
Camel 支持从远程 FTP 服务器使用,并将文件直接下载到本地工作目录中。这可避免在使用 FileOutputStream 将整个远程文件内容直接流传输到本地文件时将其读取到内存中。
Camel 将存储到名称与远程文件相同的本地文件,但在下载文件时使用 .inprogress 作为扩展名。之后,会重命名该文件以删除 .inprogress 后缀。最后,当 Exchange 完成本地文件后,将删除该文件。
因此,如果要从远程 FTP 服务器下载文件并将其保存为文件,则需要路由到文件端点,例如:
from("ftp://someone@someserver.com?password=secret&localWorkDirectory=/tmp").to("file://inbox");
from("ftp://someone@someserver.com?password=secret&localWorkDirectory=/tmp").to("file://inbox");
注意
以上路由非常高效,因为它可避免将整个文件内容读取到内存中。它将将远程文件直接下载到本地文件流中。然后,java.io.File handle 用作 Exchange 正文。文件制作者利用这个事实,可以直接在工作文件 java.io.File 处理并执行 java.io.File.rename 到目标文件名。由于 Camel 知道它是本地工作文件,它可以优化并使用重命名(而不是文件副本),因为工作文件旨在删除。