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

时间:2015-05-09 10:36:52

标签: spring ftp spring-integration

我在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"/>

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:-3)

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

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

鉴于你的树形结构:

第一个ls,返回[a,b]。

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

第二个和第四个ls返回in,由第二部分传递。

第三个ls返回a.op,由最后一部分传递。

第五个ls返回b.op,由最后一部分传递。