综合案例_文件搜索、 FileFilter过滤器的原理和使用
综合案例_文件搜索
我们遍历F:盘下所以的文件.java文件
案例:
public static void main(String[] args) {
File f = new File("F:\\");
filename(f);
}
public static void filename(File file){
if (file.exists()) {
File[] files = file.listFiles();
for (File file1 : files) {
if (file1.isDirectory()) {
File[] files1 = file1.listFiles();
if (files1!=null){
filename(file1);
}
} else {
String s = file1.toString();
boolean b = s.endsWith(".java");
if (b){
System.out.println(file1);
}
}
}
} else {
System.out.println("文件不存在");
}
}
}
File[] files1 = file1.listFiles();
if (files1!=null){
filename(file1);
}
我们需要看一下,这个盘下的空文件
然后咱遍历出来
看结果:
FileFilter过滤器的原理和使用
我们可以使用两个和ListFiles重载的方法,方法的参数传递的就是过滤器
在File类中有两个和ListFiles重载的方法,方法的参数传递的就是过滤器
File[] listFiles(FileFileter fileer)
用于抽象路径名(用于抽象路劲名(File对象)的过滤器)
作用:用来过滤文件(File 对象)
抽象方法:过来过滤文件的方法
accept 测试指定抽象路劲名是应该包含在某个路劲的列表中
参数:File pathame :使用listFiles方法遍历目录,得到每一个文件对象
FileenameFilter接口:实现此接口的类实例可用于过滤文件名
作用:用于过滤文件名称
抽象方法:用来过滤文件的方法
参数:
File dir:构造方法中传递的被遍历目录
String name:使用ListFiles方法遍历目录,获取每一个文件/文件夹的名称
案例:
创建过滤器
public class FileImpl implements FileFilter {
@Override
public boolean accept(java.io.File pathname) {
if (pathname.isDirectory()){
return true;
}
}
}
public static void main(String[] args) {
File file = new File("F:\\");
filename(file);
}
public static void filename(File file) {
if (file.exists()){
File[] files = file.listFiles(new FileImpl()); //传递过滤器对象
for (File file1 : files) {
if (file1.isDirectory()){
File[] files1 = file1.listFiles();
if (files1!=null){
filename(file1);
}
}else{
String s = file1.toString();
boolean b = s.endsWith(".java");
if (b){
System.out.println(file1);
}
}
}
}
}
}
图解: