0

我有 5 个文件。

1.ICAREP_ANI_SVCPROF_20120614_001.DAT
2.ICAREP_ANI_SVCPROF_20120617_001.DAT
3.ICAREP_ANI_SVCPROF_20120619_001.DAT
4.ICAREP_ANI_SVCPROF_20120615_001.DAT
5.ICAREP_ANI_SVCPROF_20120616_001.DAT

我想从该文件名中获取日期(例如“20120614”)并比较每个日期以使用 java 编程找到最新的日期。

任何人都可以帮助我吗?

编辑!下面是我的代码:

 String[] children = dir.list();
 String test = "";
 for (i=0; i<children.length; i++) {
   test = children[i].compareTo(children[i+1]);
 }
4

6 回答 6

1
int numbDate = Integer.parseInt((String) str.subSequence(19, 27))

其中 str 是您的文件名。

于 2012-12-28T06:51:32.710 回答
1

这是您可以使用的简单逻辑,

String filepath = "ICAREP_ANI_SVCPROF_20120614_001.DAT";
        String [] tempPath = filepath.split("_");
        System.out.println(""+tempPath[3]); //output = 20120614

        SimpleDateFormat ft = new SimpleDateFormat("yyyyMMdd");
        try
        {
            Date date1 = ft.parse(tempPath[3]); //covert the string into date
        }
        catch(ParseException ex)
        {
            System.out.println(""+ex);
        }

        //compare the date logic

从下面的代码中,您可以使用 split ("_") 获取文件上的日期,因此文件名的长度无关紧要,

之后,您可以使用带有“yyMMdd”模式的 SimpleDateFormat 解析字符串。

然后使用 ft.parse(string) 生成 Date 对象。

于 2012-12-28T06:54:20.057 回答
0

这是一个衬里:

Date date = new SimpleDateFormat("yyyyMMdd").parse(filename.replaceAll(".*(\\d{8}).*", "$1"));
于 2012-12-28T07:11:48.577 回答
0

如果您的文件名看起来总是相同的,您不需要提取日期,您可以简单地使用字符串比较文件名:

file1.getName().compareTo(file2.getName())

这样你就可以找到最新的。

于 2012-12-28T07:02:42.350 回答
0
enter code here


String[] ar = { "ICAREP_ANI_SVCPROF_20120614_001.DAT", "ICAREP_ANI_SVCPROF_20120617_001.DAT",
        "ICAREP_ANI_SVCPROF_20120619_001.DAT", "ICAREP_ANI_SVCPROF_20120615_001.DAT",
        "ICAREP_ANI_SVCPROF_20120616_001.DAT" };

int latestIndex = 0;
int latest = 0;
String latestFile = ar[0];
for (int i = 0; i < ar.length; i++) {
    String tempString = ar[i].substring(0, ar[i].lastIndexOf('_'));
    latestFile = tempString.substring(tempString.lastIndexOf('_') + 1);
    int current = Integer.parseInt(latestFile);
    if (latest < current) {
    latestIndex = i;
    latest = current;
    }
}

System.out.println("Latest file: " + ar[latestIndex]);
于 2012-12-28T09:43:12.537 回答
-1

如果它们在特定文件夹中,您可以首先获取文件名并相应地对其进行解析以获取特定字符串。试试这个

`

       public void listFilesForFolder(final File folder) {
            for (final File fileEntry : folder.listFiles()) {
                if (fileEntry.isDirectory()) {
                    listFilesForFolder(fileEntry);
                } else {
                    if(fileEntry.getName().contains("20120614"){
//code to compare the latest date
}

                }
        }
}


试试这个,我想这就是你想要的......

于 2012-12-28T06:54:04.780 回答