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

Filtering Files with prefix as well as age of file

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

我可以过滤带有前缀的文件,但我不确定如何再添加一个过滤器,即 timestamp

我最初使用 LastModifiedFileComparator.LASTMODIFIED_REVERSE 但它会检查所有不符合 timestamp 的文件。所以要做到这些,我还需要对 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;