int-sftp outbound-gateway命令选项被忽略

时间:2016-01-27 20:40:27

标签: spring-integration

我正在尝试使用Spring Integration 4.1.5从远程目录及其所有子目录中获取文件名列表。由于我只能使用SFTP连接到远程服务器,因此我需要使用int-sftp:outbound-gateway。看起来很简单:

<int-sftp:outbound-gateway id="remoteSftpLS"
        session-factory="sftpSessionFactory"
        request-channel="triggerChannel"
        command="ls"
        command-options="-1 -R"
        remote-file-separator="/"
        expression="payload"
        charset="UTF-8"
        filter="fileFilter"
        reply-channel="lsResultChannel" />

然而,似乎忽略了我放入命令选项的任何内容:

  • 无论我是否使用-R,我只能从中获取条目 顶级目录。
  • 无论我是否使用-1,我只获得FileInfo个对象,而不是文件名字符串。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

没有意义。刚刚在本地测试过。结果如下:

payload = {ArrayList@3873}  size = 3
 0 = "sftpSource1.txt"
 1 = "sftpSource2.txt"
 2 = "subSftpSource/subSftpSource1.txt"

SftpServerOutboundTests.testInt3172LocalDirectoryExpressionMGETRecursivesftpSource作为远程目录,并且:

 <int-sftp:outbound-gateway session-factory="sftpSessionFactory"
                          request-channel="inboundMGetRecursive"
                          command="ls"
                          expression="payload"
                          command-options="-1 -R"
                          reply-channel="output"/>

作为配置。

也许你的filter有罪?

protected final List<F> filterFiles(F[] files) {
    return (this.filter != null) ? this.filter.filterFiles(files) : Arrays.asList(files);
}