我有一个目录,其中包含以下格式的文件。这些文件位于名为/incoming/external/data
ABC_20100806.csv
ABC_20100807.csv
ABC_20100808.csv
ABC_20100809.csv
ABC_20100810.csv
ABC_20100811.csv
ABC_20100812.csv
如您所见,文件的文件名包含时间戳。即[RANGE]_[YYYYMMDD].csv
我需要做的是使用文件名中的时间戳而不是系统时间戳找出哪些文件具有最新日期,并将文件名存储在变量中并将其移动到另一个目录并将其余目录移动到另一个目录在java。
答案 0 :(得分:3)
您可以使用以下方法将文件名读入数组:
File directory = new File("/incoming/external/data");
String[] fileNames = directory.list(new FilenameFilter() {
public boolean accept(File dir, String fileName) {
return fileName.endsWith(".csv");
}
});
如果您的文件始终具有相同的前缀,那么只需对数组进行排序:
Arrays.sort(fileNames);
您可以删除每个fileName的前缀和后缀以提取日期的一种方法是:
int underline = fileName.indexOf("_");
int dot = fileName.indexOf(".");
String datePart = fileName.substring(underline, dot);
然后你可以将该字符串添加到数组并排序(词法)。
如果由于某些其他原因您想将日期转换为Java日期,您可以使用:
SimpleDateFormat dt = new SimpleDateFormat("yyyymmdd");
Date date = dt.parse(datepart);
您将拥有一个Java日期,您也可以在数组或列表中进行排序。