我在Spring集成项目中使用ls
命令和递归模式定义了ftp出站适配器。我想过滤并获取指定sub-directories
中的文件。服务器上的目录结构是:
root
----------a\
---------------in\
---------------------a.op
----------b\
---------------in\
---------------------b.op
我想获取a.op
和b.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"/>
我该如何解决这个问题?
答案 0 :(得分:-3)
filename-regex="([a-z]|in|.*\.op)"
在递归期间应用正则表达式。
鉴于你的树形结构:
第一个ls
,返回[a,b]。
这些是由第一个可选的正则表达式元素[a-z]传递的。
第二个和第四个ls
返回in
,由第二部分传递。
第三个ls
返回a.op
,由最后一部分传递。
第五个ls
返回b.op
,由最后一部分传递。