java - Java根据时间戳获取最新文件

标签 java

我有一个目录,其中包含以下格式的文件。这些文件位于名为 /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/

相关文章:

java - Amazon (EMR) 使用哪个 Hadoop 版本?

java - 我的类(class)代码中已弃用的 API 在哪里?我想不通

java - Spring data JPA - 封装的表达式不是有效的表达式

java - Mysql Java 更新查询

java - YouTube API v3 Java 授权

java - 如何检查在 startActivityForResult 中按下了哪个按钮,重写 onActivityResult 方法?

java - gremlin 查询以检索在它们之间具有多条边的顶点

java - 从java访问NFS共享

java - 从 Graphics2D 创建 EpsGraphics2D

java - Jackson 验证输入 json 对象