Filter
学习查找文件信息过滤是必不可少的,根据套路,首先需要传入文件路径,调用listfiles方法创建file数组
对数组进行遍历。
示例:
public static void main(String[] args) {
File file = new File("D:\\developfile\\project\\oracle\\javaSE\\resource\\test");
File[] files = file.listFiles();
for (File f : files) {
System.out.println(f);
}
}
由类实现filefilter接口,将类的对象传入到file数组中过滤掉数据,重写调用accept方法
示例:
class MyFilter implements FileFilter //实现接口
File[] files = file.listFiles(new MyFilter()); //传入过滤
public boolean accept(File pathname) {
String name = pathname.getName().toLowerCase();
boolean flag = name.endsWith(".java");
return flag;
}
如果要遍历查找到文件夹以及子文件夹下的所有指定类型的文件,这就需要递归的查找
我们可以首先写一个方法:
public static void getAllFile(File file) {
File[] files = file.listFiles(new YourFile());
for (File f : files) {
if(f.isDirectory()) {
getAllFile(f);
}else {
System.out.println(f);
}
}
}
创建一个类来实现filefilter接口来添加过滤条件实现过滤效果
class YourFile implements FileFilter{
public boolean accept(File pathname) {
//如果是文件夹则不进行过滤,直接添加到File数组中
if(pathname.isDirectory()) {
return true;
}
return pathname.getName().toLowerCase().endsWith(".java");
}
}
通过main方法建立运行入口进行运行
public static void main(String[] args) {
File file = new File("D:\\developfile\\project\\oracle\\javaSE\\resource\\test");
getAllFile(file);
}
我们可以看到运行结果:
D:\developfile\project\oracle\javaSE\resource\test\c.JAVA
D:\developfile\project\oracle\javaSE\resource\test\d.jAVA
D:\developfile\project\oracle\javaSE\resource\test\java\bcd.java
D:\developfile\project\oracle\javaSE\resource\test\k.java
D:\developfile\project\oracle\javaSE\resource\test\s\sd.java