使用前缀和文件年龄过滤文件
Filtering Files with prefix as well as age of file
我正在尝试检索所有以 "Sample"
开头的文件以及所有以 created/modified 开头的文件,这些文件与给定时间戳同时或在时间戳之前。我必须从这些文件中获取最新文件。
我可以过滤带有前缀的文件,但我不确定如何再添加一个过滤器,即 timestamp
。
我最初使用 LastModifiedFileComparator.LASTMODIFIED_REVERSE
但它会检查所有不符合 timestamp
的文件。所以要做到这些,我还需要对 timestamp
进行过滤。
我有一个想法,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;
我正在尝试检索所有以 "Sample"
开头的文件以及所有以 created/modified 开头的文件,这些文件与给定时间戳同时或在时间戳之前。我必须从这些文件中获取最新文件。
我可以过滤带有前缀的文件,但我不确定如何再添加一个过滤器,即 timestamp
。
我最初使用 LastModifiedFileComparator.LASTMODIFIED_REVERSE
但它会检查所有不符合 timestamp
的文件。所以要做到这些,我还需要对 timestamp
进行过滤。
我有一个想法,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;