int-ftp:outboundgateway 中的文件模式选项在递归模式下不起作用?
file-pattern option in int-ftp:outboundgateway not work in recursive mode?
感谢关注,我在 spring 集成项目中使用 ls 命令定义了 int-ftp:outbound-gateway
适配器,我想递归地过滤 .op
扩展文件,在我的 ftp 目录中,我将 file-pattern
设置为 *.op
螺母不起作用,我的代码是:
<int-ftp:outbound-gateway id="gatewayLS"
session-factory="ftpSessionFactory"
request-channel="inbound"
command="ls"
filter="ftpFilter"
filename-pattern="*.op"
remote-directory=""
command-options="-R"
expression="payload"
reply-channel="toSplitter"/>
更新:
感谢@Gary 的帮助,我使用 filename-regex
选项而不是 filename-pattern
到 ([foo]|.*\.op)
(例如)并且它的工作。
对于过滤多个子目录,我们可以使用正则表达式 ([a-z]*|[a-z]*|.*\.op)
并且它可以正常工作。
问题可能是您的子目录没有通过过滤器,因此没有被搜索到。如 the documentation 中所述,您需要将子目录模式添加到过滤器中...
... However, files in the tree can be filtered, by providing a FileListFilter; directories in the tree can also be filtered this way. A FileListFilter can be provided by reference or by filename-pattern or filename-regex attributes. For example, filename-regex="(subDir|.*1.txt)"
will retrieve all files ending with 1.txt in the remote directory and the subdirectory subDir. If a subdirectory is filtered, no additional traversal of that subdirectory is performed.
所以,如果你有子目录 foo1
、foo2
、foo3
等,你可以使用
filename-regex="(foo[0-9]|.*\.txt)"
正则表达式的第一部分传递子目录,第二部分匹配以 .txt
.
结尾的文件(或目录)
了解递归的工作原理很重要。从顶层开始...
- 列表files/dirs
- 过滤器files/dirs
- 迭代,如果是目录,递归
当然,您可以提供自定义过滤器以按您希望的方式工作(例如,不过滤目录)。
感谢关注,我在 spring 集成项目中使用 ls 命令定义了 int-ftp:outbound-gateway
适配器,我想递归地过滤 .op
扩展文件,在我的 ftp 目录中,我将 file-pattern
设置为 *.op
螺母不起作用,我的代码是:
<int-ftp:outbound-gateway id="gatewayLS"
session-factory="ftpSessionFactory"
request-channel="inbound"
command="ls"
filter="ftpFilter"
filename-pattern="*.op"
remote-directory=""
command-options="-R"
expression="payload"
reply-channel="toSplitter"/>
更新:
感谢@Gary 的帮助,我使用 filename-regex
选项而不是 filename-pattern
到 ([foo]|.*\.op)
(例如)并且它的工作。
对于过滤多个子目录,我们可以使用正则表达式 ([a-z]*|[a-z]*|.*\.op)
并且它可以正常工作。
问题可能是您的子目录没有通过过滤器,因此没有被搜索到。如 the documentation 中所述,您需要将子目录模式添加到过滤器中...
... However, files in the tree can be filtered, by providing a FileListFilter; directories in the tree can also be filtered this way. A FileListFilter can be provided by reference or by filename-pattern or filename-regex attributes. For example,
filename-regex="(subDir|.*1.txt)"
will retrieve all files ending with 1.txt in the remote directory and the subdirectory subDir. If a subdirectory is filtered, no additional traversal of that subdirectory is performed.
所以,如果你有子目录 foo1
、foo2
、foo3
等,你可以使用
filename-regex="(foo[0-9]|.*\.txt)"
正则表达式的第一部分传递子目录,第二部分匹配以 .txt
.
了解递归的工作原理很重要。从顶层开始...
- 列表files/dirs
- 过滤器files/dirs
- 迭代,如果是目录,递归
当然,您可以提供自定义过滤器以按您希望的方式工作(例如,不过滤目录)。