0

我知道如何使用 spring-integration-sftp 从 SFTP 位置读取和写入,配置如下:

<bean id="sftpSessionFactory"
    class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory"
    p:host="${host}"
    p:port="${port}"
    p:user="${username}"
    p:password="${password}"
    p:allowUnknownKeys="true" />

<int:channel id="sftpChannel">
    <int:queue />
</int:channel>

<int-sftp:inbound-channel-adapter
    id="sftpInboundAdapter"
    channel="sftpChannel"
    session-factory="sftpSessionFactory"
    remote-directory="${remote.dir}"
    local-directory="${local.dir}"      <-- i don't want
    auto-create-local-directory="false"
    delete-remote-files="false"
    filename-pattern="*.TXT"            <-- how to specify multiple type
    local-filter="acceptOnceFilter">
</int-sftp:inbound-channel-adapter>

<bean id="acceptOnceFilter"
  class="org.springframework.integration.file.filters.AcceptOnceFileListFilter"/>

<int:poller default="true" fixed-rate="1000" max-messages-per-poll="100" />  

<int:service-activator input-channel="sftpChannel" ref="stringHandler" method="handleMessage"/>

<bean id="stringHandler" class="com.core.sftp.StringHandler"/>

我尝试通过删除标签本地目录元素但弹簧不允许这样做,有没有办法读取和写入文件而不在本地目录中创建它?

有没有办法在不区分大小写的情况下指定多种文件扩展名类型?

4

1 回答 1

2

您可以使用出站网关(get带有-stream选项的命令)将远程文件作为InputStream.

请注意,从流中读取文件内容后,您有责任关闭会话。

请参阅此处的文档

对于文件入站适配器上不区分大小写的匹配,请使用正则表达式而不是简单模式:filename-regex="(?i).*\.txt".

与出站网关没有模式匹配;您必须使用该ls命令列出文件并获取所需的文件。sftp 示例显示了如何执行此操作。

于 2016-03-11T13:55:00.617 回答