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
然后,我们希望按名称作为第 2 个选项分组,这样,具有相同 modifcation 的文件按名称排序:
sortBy=file:modified;file:name
sortBy=file:modified;file:name
在这里,您能否发现问题?修改后的文件时间戳太大,不像毫秒一样,如果我们只想按日期排序,则按名称排序,那么将怎么办?
此外,我们拥有对文件语言的真正功能,我们便可以使用支持模式的 date 命令。https://access.redhat.com/documentation/en-us/red_hat_integration/2022.q4/html-single/camel_spring_boot_reference/index#csb-camel-file-language-starter这样可以通过以下方式解决:
sortBy=date:file:yyyyMMdd;file:name
sortBy=date:file:yyyyMMdd;file:name
是的,这很强大,oh 是由每个组也可以使用反转的方式强大,因此我们可以撤销文件名:
sortBy=date:file:yyyyMMdd;reverse:file:name
sortBy=date:file:yyyyMMdd;reverse:file:name