gpt4 book ai didi

java - 如何在apache Camel中使用文件名日期轮询文件?

转载 作者:行者123 更新时间:2023-12-01 07:50:47 26 4
gpt4 key购买 nike

我有文件名中包含日期的文本文件列表,例如 A_2016_12_30 等。我需要轮询仅按日期排序的文件。

请参阅下面的文件列表。

enter image description here

我已经使用文件组件尝试了以下参数。

  1. 它可以很好地使用文件时间戳对文件进行排序。

    file://<some location>?sortBy=file:modified
  2. 它不能根据文件名工作。这里面临问题。

    文件://?sortBy=日期:文件:YYYY-MM-DD

是否有另一种方法可以使用正则表达式或其他方式按文件日期进行排序?

以下是一些有用的链接:

  1. http://camel.apache.org/file-language.html
  2. http://camel.apache.org/file2.html

最佳答案

这是克劳斯所说的排序逻辑的例子。

package com.example;
import java.util.Comparator;
import org.apache.camel.component.file.GenericFile;

public class DateFileSorter<T> implements Comparator<GenericFile<T>> {

@Override
public int compare(GenericFile<T> f1, GenericFile<T> f2) {
String fileDate1 = getDateFromFilename(f1.getFileName());
String fileDate2 = getDateFromFilename(f2.getFileName());
return fileDate1.compareTo(fileDate2);
}

/**
* Return date from file name between "_" and "."
*/
private String getDateFromFilename(String fileName) {
return fileName.substring(fileName.indexOf("_") + 1, fileName.indexOf("."));
}
}

然后将此行添加到 beans.xml 文件并将 sorter=#fileSorter 添加到文件端点。

<bean id="fileSorter" class="com.example.DateFileSorter"/>

您的文件读取后的顺序。

: C_2016-01-14.xml
: A_2016-01-15.xml
: C_2016-06-01.xml
: A_2016-06-02.xml
: C_2016-06-02.xml
: A_2016-06-03.xml
: C_2016-06-03.xml
: A_2016-06-04.xml
: C_2016-12-29.xml
: A_2016-12-30.xml

关于java - 如何在apache Camel中使用文件名日期轮询文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38123683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com