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