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