根据http://docs.spring.io/spring-integration/reference/html/ftp.html#ftp-outbound-gateway,mget有效载荷是文件列表
mget根据模式检索多个远程文件,并支持以下选项:
...
由mget操作产生的消息有效负载是ListFile> object - 一个File对象列表,每个对象代表一个检索到的文件。
我有以下配置
<int-ftp:outbound-gateway
session-factory="ftpSesionFactory"
request-channel="request-channel"
reply-channel="reply-channel"
auto-create-directory="true"
local-directory="${local-directory}"
command="mget"
command-options="-stream"
expression="payload">
<int-ftp:request-handler-advice-chain>
<int:retry-advice />
</int-ftp:request-handler-advice-chain>
</int-ftp:outbound-gateway>
<int-file:splitter input-channel="reply-channel" output-channel="logger"/>
但有效负载是List&lt; FTPFile&gt;并且分离器不起作用。这是一个错误吗?如何获取下载的Listjava.io.File&gt;在有效载荷中(如文档所述)?
解决方法是使用另一个组件从本地目录中读取文件,如how to get file with int-ftp:outbound-gateway and remove from server if exists?所述。
我使用的是spring-integration 4.2.5和commons-net-2.0。
答案 0 :(得分:1)
是什么让你相信它是List<FTPFile
?
This test显示它是List<java.io.File>
。
ls
命令会返回String
或FTPFile
的列表,具体取决于-1
选项。
最后,-stream
不支持mget
,仅get
。
此外,您不需要文件分割器 - 读取每个文件 - 您需要定期<int:splitter/>
将List<File>
拆分为单独的文件;然后文件分割器将读取文件行。