23.27. 使用 ANT 路径匹配器进行过滤
ANT 路径匹配器基于 AntPathMatcher。
文件路径与以下规则匹配:
-
?
匹配一个字符 -
*
匹配零个或多个字符 -
**
匹配路径中的零个或多个目录
antInclude
和 antExclude
选项易于指定 ANT 样式包含/exclude,而无需定义过滤器。如需更多信息,请参阅上面的 URI 选项。
以下示例演示了如何使用它:
23.27.1. 使用 Comparator 排序 复制链接链接已复制到粘贴板!
Camel 支持可插拔排序策略。这个策略,它使用 Java 中的 java.util.Comparator
中的构建。然后,您可以使用此类比较器配置端点,并使 Camel 在被处理前对文件进行排序。
在示例中,我们构建了自己的比较器,它们按文件名排序:
然后,我们可以使用 sorter 选项配置我们的路由,以引用在 spring XML 文件中定义的排序程序(我的
)。
URI 选项可以使用上面的 Spring DSL 路由中的 # 语法
来引用 Bean,方法是通过使用 # 为 id 前缀指向 Registry 中的 Bean。因此,编写 sorter=#mySorter
指示 Camel 进入 Registry 的 ID 为 ID 为 mySorter
的 bean。
23.27.2. 使用 sortBy 排序 复制链接链接已复制到粘贴板!
Camel 支持可插拔排序策略。此策略它使用 文件 语言来配置排序。sortBy
选项配置如下:
sortBy=group 1;group 2;group 3;...
sortBy=group 1;group 2;group 3;...
其中,每个组用半冒号分隔。在简单情况下,您只使用一个组,因此一个简单的示例可以是:
sortBy=file:name
sortBy=file:name
这会按文件名排序,您可以通过将前缀向组来 反转
顺序来反转,因此排序现在为 Z...A:
sortBy=reverse:file:name
sortBy=reverse:file:name
因为我们拥有 文件 语言的完整功能,所以我们可以使用其他一些参数,因此如果我们想要按文件大小排序:
sortBy=file:length
sortBy=file:length
您可以将 配置为忽略大小写,使用 ignoreCase:
进行字符串比较,因此如果您想要使用文件名排序,但要忽略大小写,然后我们这样做:
sortBy=ignoreCase:file:name
sortBy=ignoreCase:file:name
您可以组合忽略问题单和反向,但必须首先指定反向:
sortBy=reverse:ignoreCase:file:name
sortBy=reverse:ignoreCase:file:name
在以下示例中,我们希望按最后修改的文件排序,因此我们这样做:
sortBy=file:modified
sortBy=file:modified
然后,我们希望按照名称来分组第二选项,因此具有相同 modifcation 的文件按名称排序:
sortBy=file:modified;file:name
sortBy=file:modified;file:name
现在这里存在一个问题,您可以发现它吗?文件修改的时间戳太正常,因为它将以毫秒为单位,但如果我们只希望按日期排序,然后按名称进行子组?
另外,我们拥有 文件 语言的真正力量,我们可以使用其支持模式的 date 命令。因此,这可以被解决:
sortBy=date:file:yyyyMMdd;file:name
sortBy=date:file:yyyyMMdd;file:name
是的,这非常强大,您也可以通过每个组使用反向的方式,因此可以撤销文件名:
sortBy=date:file:yyyyMMdd;reverse:file:name
sortBy=date:file:yyyyMMdd;reverse:file:name