一个简单的文件过滤器
文件过滤器的作用:在众多的文件中,筛选出符合条件的文件。例如在我的电脑中的D:\文档\浏览器下载目录下,筛选出所有的以.mp4或者.jpg等等结尾的文件
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
/**
* @Author: 小黑
* @Description: 文件过滤器
* @Date Created in 2020-08-13 17:20
* @Modified By:
*/
public class Demo {
public static void main(String[] args) throws IOException {
// 要扫描的磁盘
File g = new File("g:\\");
listFiles(g);
}
public static void listFiles(File file){
//方法一 -----------------------------------------------------------------------------
// 1、创建一个文件过滤器,并描述规则 (匿名内部类,实现内部方法)
FileFilter filter = new FileFilter() {
@Override
public boolean accept(File pathname) {
// 若文件为规定格式,或是文件夹,则返回true
if (pathname.getName().endsWith(".jpg") || pathname.isDirectory()){
return true;
}
return false;
}
};
File[] files = file.listFiles(filter);
// 判断文件不为null并且文件长度大于0(避免空指针异常)
if (files!=null && files.length>0)
for (File f:files) {
if (f.isDirectory()){
listFiles(f);
}else {
// 获取文件路径
System.out.println("发现一个jpg: " + f.getAbsolutePath());
}
}
//方法二(简化)------------------------------------------------------------------------
File[] files = file.listFiles( new FileFilter() {
@Override
public boolean accept(File pathname) {
if (pathname.getName().endsWith(".jpg") || pathname.isDirectory()){
return true;
}
return false;
}
});
if (files!=null && files.length>0)
for (File f:files) {
if (f.isDirectory()){
listFiles(f);
}else {
System.out.println("发现一个jpg: " + f.getAbsolutePath());
}
}
}
}