我只想选择那些扩展名为“txt
”且超过1分钟的文件。有没有办法在listFiles
方法中强制执行这两个条件?
为了确保它只选择txt文件,我就是这样做的
Collection<File> myFiles = FileUtils.listFiles(FileUtils.getFile(inputPath),
FileFilterUtils.suffixFileFilter(".txt"),
null);
我可以在isFileOlder()
找到FileUtils
方法但是如何对它施加限制?
请提出一些建议。
答案 0 :(得分:2)
您想使用AndFileFilter。
这使您可以将任意两个文件过滤器组合为布尔值。由于没有针对年龄标准的已交付文件过滤器,您仍需要按照其他注释的行创建一个。
答案 1 :(得分:1)
您可以滚动自己的IOFileFilter,这将进行两项检查:
public class MyFileFilter implements IOFileFilter {
String extension;
Date maxDate;
public MyFileFilter(String extension, Date maxDate){
this.extension = extension;
this.maxDate = maxDate;
}
@Override
public boolean accept(File dir, String name) {
return false;
}
@Override
public boolean accept(File file) {
boolean suffixMatches = file.getName().endsWith(extension);
boolean timeMatches = FileUtils.isFileOlder(file, maxDate);
return suffixMatches && timeMatches ;
}
}
然后你会这样称呼它:
String extension = ".txt";
// compute current date minus 1 minute
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.add(Calendar.MINUTE, -1);
Date maxDate = cal.getTime();
Collection<File> myFiles = FileUtils.listFiles(FileUtils.getFile(inputPath),new MyFileFilter(extension,maxDate) ,
null);