在 java 中对 FileUtils listFiles 施加两个条件
Imposing two conditions on FileUtils listFiles in java
我只想选择那些具有“txt
”扩展名且存在时间超过 1 分钟的文件。有没有办法在 listFiles
方法中强制执行这两个条件?
为了确保它只选择 txt 文件,我就是这样做的
Collection<File> myFiles = FileUtils.listFiles(FileUtils.getFile(inputPath),
FileFilterUtils.suffixFileFilter(".txt"),
null);
我可以在 FileUtils
中找到 isFileOlder()
方法,但是如何对它施加两个限制?
请提出一些方法。
您想使用 AndFileFilter。
这使您可以将任意两个文件过滤器组合为一个布尔值。由于没有针对年龄标准提供的文件过滤器,您仍然需要创建一个,按照其他评论的行。
您可以推出自己的 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);
我只想选择那些具有“txt
”扩展名且存在时间超过 1 分钟的文件。有没有办法在 listFiles
方法中强制执行这两个条件?
为了确保它只选择 txt 文件,我就是这样做的
Collection<File> myFiles = FileUtils.listFiles(FileUtils.getFile(inputPath),
FileFilterUtils.suffixFileFilter(".txt"),
null);
我可以在 FileUtils
中找到 isFileOlder()
方法,但是如何对它施加两个限制?
请提出一些方法。
您想使用 AndFileFilter。
这使您可以将任意两个文件过滤器组合为一个布尔值。由于没有针对年龄标准提供的文件过滤器,您仍然需要创建一个,按照其他评论的行。
您可以推出自己的 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);