Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中如何根据日期从文件夹中获取文件_Java - Fatal编程技术网

在java中如何根据日期从文件夹中获取文件

在java中如何根据日期从文件夹中获取文件,java,Java,我在一个文件夹中有多个具有命名约定的文件 Name_MoreName_DDMMYYYY_SomeNumber_HHMMSS.txt 如何获取具有最早日期和时间(即最早的DDMMYYYY和HHMMSS)的文件 例如,在以下示例中: Name_MoreName_22012012_SomeNumber_072334.txt Name_MoreName_22012012_SomeNumber_072134.txt Name_MoreName_24012012_SomeNumber_072339.txt

我在一个文件夹中有多个具有命名约定的文件

Name_MoreName_DDMMYYYY_SomeNumber_HHMMSS.txt
如何获取具有最早日期和时间(即最早的DDMMYYYY和HHMMSS)的文件

例如,在以下示例中:

Name_MoreName_22012012_SomeNumber_072334.txt
Name_MoreName_22012012_SomeNumber_072134.txt
Name_MoreName_24012012_SomeNumber_072339.txt
Name_MoreName_22012012_SomeNumber_072135.txt
。。。最旧的文件将是

Name_MoreName_22012012_SomeNumber_072134.txt

首先,将文件名读入
列表

然后使用能够理解文件名格式的比较器对列表进行排序:

public class FileNameComparator implements Comparator<String> {

    private static Pattern pattern = Pattern.compile("^.*?_([0-9]{2})([0-9]{2})([0-9]{4})_.*?_([0-9]{2})([0-9]{2})([0-9]{2})\\.txt$");
    private static int[] groupOrder = new int[]{3, 2, 1, 4, 5, 6};

    @Override
    public int compare(String filename1, String filename2) {
        Matcher matcher1 = pattern.matcher(filename1);
        Matcher matcher2 = pattern.matcher(filename2);

        return compareMatchers(matcher1, matcher2);
    }

    private int compareMatchers(Matcher matcher1, Matcher matcher2) {
        if (matcher1.matches()) {
            if (matcher2.matches()) {

                // for each group in the correct order (year, month, date, hour, minute, second)
                for (int group : groupOrder) {
                    int result = compareValues(matcher1.group(group), matcher2.group(group));
                    if (result != 0) {
                        return result;
                    }
                }

                return 0;

            } else {
                // filename 2 is incorrect pattern
                return -1;
            }
        } else {
            // filename 1 is incorrect pattern
            return 1;
        }
    }

    private int compareValues(String value1, String value2) {
        return new Integer(value1).compareTo(new Integer(value2));
    }
}
。。。然后需要更改正则表达式和代码,以便能够提取参数并执行正确的比较。正则表达式将是:

^.*?_([0-9]{4})_(.{3})_([0-9]{2})_([0-9]{2})([0-9]{2})([0-9]{2})\\.txt$

。。。您将按顺序(1、2、3、4、5、6)处理它们,当您处理第二组时,您需要按月份名称顺序进行比较。

获取文件名,对它们进行排序并根据排序选择顶部/底部我想获得文件夹中最后添加的文件和我的文件名if-logFile_2016_Jun_02_115011…我已编辑了我的答案,以帮助更改文件名模式。如果对您有帮助,请随时进行升级投票。编辑以涵盖文件名模式的更改。文件f1=新文件(从FileCabineTach+System.getProperty(“File.separator”)+nsFile.getName()下载);f1.删除();请告诉我怎么了这是个新问题吗?如果是,请以单独问题的形式发布。
if-logFile_2016_Jun_02_115011.txt
^.*?_([0-9]{4})_(.{3})_([0-9]{2})_([0-9]{2})([0-9]{2})([0-9]{2})\\.txt$