111.11. 使用本地工作目录
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
句柄用作 Exchange 正文。文件生成者利用此事实,可以直接在工作文件 java.io.File
处理上工作,并对目标文件名执行 java.io.File.rename
。当 Camel 知道它是本地的工作文件时,它可以优化和使用重命名,而不是文件副本,因为工作文件将随时删除。