关于Filename和FileFilter的应用
- 概念
在file类中有两个和ListFiles重载的方法,方法的参数传递就是过滤器
File[] listFiles(FileFilter filter) :(java.io.FileFilter)返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。
File[] listFiles(FilenameFilter filter):(java.io.FilenameFilter)返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。
java.io.FileFilter接口:
作用:用来过滤文件(File对象)
boolean accept(File pathname) :测试指定的抽象路径名是否应包含在路径名列表中。
File pathname是指Listfiles遍历目录得到的每一个文件对象。
java.io.FilenameFilter接口:
作用:用于过滤文件名
boolean accept(File dir, String name) :测试指定文件是否应包含在文件列表中。
File dir是指构造方法中传递的被遍历的目录,String name是指使用Listfiles遍历目录得到的每一个文件和文件夹的名称
注意:
两个过滤器接口没有实现类,需要自己写,重写accept方法,在方法中自己定义过滤的规则
Filename过滤器
用于过滤File文件
实现boolean accept(File pathname) 方法 返回值是File[]
过滤得到某一些文件:比如以.txt结尾的文件
package com.cyc.test;
import java.io.File;
public class FileFilter {
public static void main(String[] args) {
//创建File对象
File file=new File("C:\Users\CYC\Desktop\aaa");
//导入FileFilter过滤器
File[] files = file.listFiles(new java.io.FileFilter() {
@Override
public boolean accept(File pathname) {
if (pathname.isDirectory()){
return false;
}
return pathname.getName().toLowerCase().endsWith(".txt");
}
});
for (File file1:files){
System.out.println(file1);
}
}
}
FilenameFilter过滤器
用于过滤文件名称
实现boolean accept(File dir, String name)方法返回值是File[]
package com.cyc.test;
import java.io.File;
import java.io.FilenameFilter;
public class FilenameFilterDemo {
public static void main(String[] args) {
File file=new File("C:\Users\CYC\Desktop\aaa");
File[] files = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".txt");
}
});
for (File file1:files){
System.out.println(file1);
}
}
}
FilenameFilter类和FileFilter类的异同 相同:两者都是用来过滤文件的;
两者的accept方法都没有实现类,需要自己在方法定义过滤条件的实现类。
不同:两者的accept方法的参数不同。
FilenameFilter接口:
boolean accept(File dir,String name) dir:当前目录,name:文件名。
FileFilter接口:
boolean accept(File pathname) pathname:文件