如何在 int-ftp:outbound-gateway 中使用 filename-regex 选项?

how to use filename-regex option in int-ftp:outbound-gateway?

我在 spring 集成项目中使用 ls 命令和递归模式定义了 ftp 出站适配器。我想过滤并获取指定 sub-directories 中的文件。服务器上的目录结构是:

root  
----------a\  
---------------in\  
---------------------a.op   
----------b\   
---------------in\  
---------------------b.op   

我想获取 a.opb.op 文件。我将 filename-regex 选项设置为 ([a-z]|in|.*\.op) 但它没有正常工作,只有一级目录被过滤。我的适配器代码是:

 <int:inbound-channel-adapter expression="'/'" channel="inbound">
        <int:poller fixed-delay="20000"/>
    </int:inbound-channel-adapter>
 <int-ftp:outbound-gateway id="gatewayLS"
                              session-factory="ftpSessionFactory"
                              request-channel="inbound"
                              command="ls"
                              filename-regex="([a-z]|in|.*\.op)"
                              command-options="-R"
                              expression="payload"
                              reply-channel="toSplitter"/>

我该如何解决这个问题?

filename-regex="([a-z]|in|.*\.op)"

在递归期间应用正则表达式。

鉴于您的树结构:

第一个ls,returns[a,b].

这些由第一个可选的正则表达式元素 [a-z] 传递。

第二个和第四个lsreturnsin,第二部分通过

第三个lsreturnsa.op,最后一部分通过了

第五个lsreturnsb.op,最后一部分通过