我有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编程的最新日期。
任何人都可以帮助我吗?
EDIT! 以下是我的代码:
String[] children = dir.list();
String test = "";
for (i=0; i<children.length; i++) {
test = children[i].compareTo(children[i+1]);
}
答案 0 :(得分:1)
int numbDate = Integer.parseInt((String) str.subSequence(19, 27))
其中str是你的文件名。
答案 1 :(得分: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(“_”)获取文件上的日期, 所以文件名的长度无关紧要,
之后你可以使用SimpleDateFormat解析字符串 “yyMMdd”模式。
然后使用ft.parse(string)生成Date对象。
答案 2 :(得分:0)
如果您的文件名看起来一样,您不需要提取日期,您只需使用字符串比较文件名:
file1.getName().compareTo(file2.getName())
这样你就可以找到最新的。
答案 3 :(得分:0)
这是一个班轮:
Date date = new SimpleDateFormat("yyyyMMdd").parse(filename.replaceAll(".*(\\d{8}).*", "$1"));
答案 4 :(得分: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]);
答案 5 :(得分:-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
}
}
}
}
试试这个,我想这就是你想要的......