我有一个目录,其中包含以下格式的文件。这些文件位于名为 /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中。
最佳答案
您可以使用以下方法将文件名读入数组:
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);
删除每个文件名的前缀和后缀以提取日期的一种方法是:
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 日期,您也可以将其在数组或列表中排序。
关于java - Java根据时间戳获取最新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22080655/