在Java中获取指定类型的文件,可以用带参数的listFiles的来实现
在网上搜了一些方法,几乎都是新建一个实现FilenameFilter或者FileFilter的类,然后把它作为listFiles的参数
但是在写一些简单的测试代码的时候,我不想新建一个类,而是希望用更快的方法来实现文件的过滤
所以就可以这样写:
File filepath = new File("D:\\");
File[] files = filepath.listFiles(new FilenameFilter() {
@Override
public boolean accept(File file, String s) {
//查找文件名以.jpg结尾的文件
if (s.endsWith(".jpg")) {
return true;
}
return false;
}
});
这样直接new一个实现FilenameFilter接口的对象作为listFiles的参数,就不用再新建一个类
listFiles还有另外一个参数FileFilter,也同样可以实现过滤
File[] files = filepath.listFiles(new FileFilter() {
@Override
public boolean accept(File file) {
//查找文件名以.jpg结尾的文件
if (file.getName().endsWith(".jpg")) {
return true;
}
return false;
}
});
查找所有非文件夹文件:
File[] files = filepath.listFiles(new FileFilter() {
@Override
public boolean accept(File file) {
//查找所有非文件夹文件
if (!file.isDirectory()) {
return true;
}
return false;
}
});
查找指定大小的文件:
File[] files = filepath.listFiles(new FileFilter() {
@Override
public boolean accept(File file) {
//查找大于1kb,小于2kb的文件
long length = file.length();
if (length > 1024 && length < 2048) {
return true;
}
return false;
}
});
个人感觉FileFilter比FilenameFilter更加强大