Java 使用前缀和文件期限筛选文件

Java 使用前缀和文件期限筛选文件,java,file,filtering,apache-commons,prefix,Java,File,Filtering,Apache Commons,Prefix,我正在尝试检索以“Sample”开头的所有文件,以及在给定时间戳或时间戳之前创建/修改的所有文件。我必须从这些文件中获取最新的文件 我可以用前缀过滤文件,但我不确定如何再添加一个过滤器,即时间戳 我最初使用的是LastModifiedFileComparator.LASTMODIFIED\u REVERSE,但它并没有根据时间戳检查所有文件。所以要做这些,我还需要对时间戳进行过滤。 我有一个想法,apache commons的AgeFileFilter和PrefixFileFilter类将对我有

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

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

我最初使用的是
LastModifiedFileComparator.LASTMODIFIED\u REVERSE
,但它并没有根据
时间戳检查所有文件。所以要做这些,我还需要对时间戳进行过滤。
我有一个想法,apache commons的
AgeFileFilter
PrefixFileFilter
类将对我有所帮助,但我无法将这两个类放在一起

我如何做到这一点

下面是我的代码

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;

希望我没有把你们搞糊涂,我编辑了代码,路径是我必须根据过滤器列出文件的目录。现在你能再检查一下吗?这不会改变任何事情,我的答案都是一样的