搜索

34.28. 使用 ANT 路径匹配程序进行过滤

download PDF

ANT 路径匹配器基于 AntPathMatcher

文件路径与以下规则匹配:

  • ? 匹配一个字符
  • * 匹配零个或更多字符
  • | 匹配路径中的零个或更多目录

antIncludeantExclude 选项可以轻松地指定 ANT 风格 include/exclude,而无需定义过滤器。如需更多信息,请参阅上面的 URI 选项。以下示例演示了如何使用它。

注意

当将 minDepth/maxDepth 与 recursive=true 组合结合使用时,tExclude=…​readLockDeleteOrphanLockFiles=true 会导致扫描所有文件/subfolders 深度,超过 maxDepth 中提到的值。解决办法是配置 readLockDeleteOrphanLockFiles=false

34.28.1. 使用 Comparator 排序

Camel 支持可插拔排序策略。此策略使用 Java 中的 java.util.Comparator 中的构建。然后,您可以使用此类比较器配置端点,并在处理前 Camel 对文件进行排序。

在示例中,我们构建了自己的比较器,其按文件名排序:

然后,我们可以使用 sorter 选项配置我们的路由来引用我们排序器(我的排序器),我们在 spring XML 文件中定义:

 <!-- define our sorter as a plain spring bean -->
 <bean id="mySorter" class="com.mycompany.MyFileSorter"/>

<route>
  <from uri="file://inbox?sorter=#mySorter"/>
  <to uri="bean:processInbox"/>
</route>
注意

URI 选项可以使用 # 语法来引用 bean
在 Spring DSL 路由中,可以通过在 id 前使用 # 前缀来引用 Registry 中的 beans。因此,编写排序器 =#mySorter,将指示 Camel 来查找 ID 为 mySorter 的 bean 的 Registry。

34.28.2. 使用 sortBy 排序

Camel 支持可插拔排序策略。此策略使用 File 语言来配置排序。sortBy 选项配置如下:

sortBy=group 1;group 2;group 3;...

其中每个组都用分号隔开。在只使用一个组的简单情况下,一个简单的示例可以是:

sortBy=file:name

这将按文件名排序,您可以通过向组添加前缀 reverse: 来反向对顺序进行反转,因此排序现在是 Z...A:

sortBy=reverse:file:name

我们拥有 文件 语言的完整功能,我们可以使用其他一些参数,因此如果我们希望按文件大小排序:

sortBy=file:length

您可以配置来忽略大小写,使用 ignoreCase: 进行字符串比较,因此如果您想要使用文件名排序,但要忽略大小,然后我们这样做:

sortBy=ignoreCase:file:name

您可以组合忽略问题单和反向,但必须首先指定反向:

sortBy=reverse:ignoreCase:file:name

在以下示例中,我们想要根据最后修改的文件排序:

sortBy=file:modified

然后,我们希望按名称对名称进行分组,因此具有相同 modifcation 的文件按名称排序:

sortBy=file:modified;file:name

现在有一个问题,您可以发现它吗?文件的修改时间戳太大,因为它将以毫秒为单位,但如果我们只希望按日期排序,然后按名称排列子组?
我们拥有 文件 语言的真正能力,我们可以使用支持模式的 date 命令。因此,这可以解决:

sortBy=date:file:yyyyMMdd;file:name

Yeah 是非常强大的,通过您可以为每个组群使用反向的方式 oh,因此我们可以撤销文件名:

sortBy=date:file:yyyyMMdd;reverse:file:name
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.