【发布时间】:2015-02-19 10:46:13
【问题描述】:
我想用一个方法来编写代码,得到一个file path 和一个file name prefix
并删除该dir path 和该file name prefix 中的所有文件,但最新的10 个文件除外。
我想使用 lambda (java 8)
但我不确定 ti 如何过滤 10 个最新文件:
public Optional<File> getLatestFileFromDir(String baseLineFileName) {
File baseLineFile = new File(baseLineFileName);
File dir = baseLineFile.getParentFile();
File[] files = dir.listFiles();
if (files == null || files.length == 0) {
return null;
}
return Arrays.asList(dir.listFiles()).stream()
.filter(file -> isNameLikeBaseLine(file, baseLineFile.getName()))
.max(new Comparator<File>() {
@Override
public int compare(File o1, File o2) {
int answer;
if (o1.lastModified() == o2.lastModified()) {
answer = 0;
} else if (o1.lastModified() > o2.lastModified()) {
answer = 1;
} else {
answer = -1;
}
return answer;
}
});
}
【问题讨论】: