为什么 int-ftp:outbound-gateway payload 不是 List<java.io.File>?

Why int-ftp:outbound-gateway payload is not List<java.io.File>?

根据http://docs.spring.io/spring-integration/reference/html/ftp.html#ftp-outbound-gateway,mget 负载是一个文件列表

mget retrieves multiple remote files based on a pattern and supports the following option:

...

The message payload resulting from an mget operation is a ListFile> object - a List of File objects, each representing a retrieved 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"/>  

但是有效载荷是一个列表<FTPFile>,拆分器不起作用。这是一个错误吗?如何在有效负载中获取下载的 Listjava.io.File>(如文档所述)?

解决方法是使用另一个组件从本地目录读取文件,如 所述。

我正在使用 spring-integration 4.2.5 和 commons-net-2.0。

是什么让您相信它是 List<FTPFile

This test 显示它是 List<java.io.File>.

ls 命令 returns 是 StringFTPFile 的列表,具体取决于 -1 选项。

最后,-stream 不支持 mget,仅支持 get

此外,您不希望那里有文件拆分器 - 读取每个文件 - 您需要一个常规 <int:splitter/>List<File> 拆分为单独的文件;然后文件拆分器将读取文件行。