gpt4 book ai didi

java - 使用前缀和文件年龄过滤文件

转载 作者:行者123 更新时间:2023-11-30 02:36:49 25 4
gpt4 key购买 nike

我正在尝试检索以“Sample”开头的所有文件,以及与给定时间戳同时或在时间戳之前创建/修改的所有文件。我必须从这些中获取最新的文件。

我可以使用前缀过滤文件,但我不确定如何添加一个过滤器,即时间戳

我最初使用LastModifiedFileComparator.LASTMODIFIED_REVERSE,但它检查所有文件不根据时间戳。因此,要做到这些,我还需要对 timestamp 进行过滤。我有一个想法,apache commons 的 AgeFileFilterPrefixFileFilter 类会对我有所帮助,但我无法将这两个类放在一起。

我如何实现这个目标?

下面是我的代码

public void searchFiles(File path) {
FilenameFilter prefix = new FilenameFilter() {
public boolean accept(File directory, String filename) {
return filename.startsWith("Sample");
}
};

SimpleDateFormat dateTime = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");

File[] files1 = path.listFiles(prefix);
Arrays.sort(files1, LastModifiedFileComparator.LASTMODIFIED_REVERSE);
System.out.println("\nThe latest file is: "+files1[0]+ " & is updated on: " + dateTime.format(files1[0].lastModified()));
}

提前致谢

最佳答案

您还需要一个可以比较文件名和修改时间的过滤器。FilenameFilter 无法执行此操作,但 FileFilter 可以,例如:

FileFilter filter = new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().startsWith("Sample") && pathname.lastModified() > LASTMODIFIED_LIMIT;
}
};

同样的事情可以用 lambda 写得更短:

FileFilter filter = pathname -> pathname.getName().startsWith("Sample")
&& pathname.lastModified() > LASTMODIFIED_LIMIT;

关于java - 使用前缀和文件年龄过滤文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42817030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com