文件名过滤器:
1、过滤器实现接口FilenameFilter
2、实现方法
public boolean accept(File dir , String path)
{
return (通过自己实现的算法如果返回true则收集起来,如果返回false,则过滤掉)
}
dir 表示这些文件存在的父目录(文件夹)!
path表示文件的名称,不是文件的路径!!!
实例:
//过滤器
class NameFilter implements FilenameFilter
{
String type;
public NameFilter(String type)
{
this.type = type;
}
//dir应该是父文件夹 name代表父文件夹里面每个子文件完整路径
public boolean accept(File dir, String path) {
File f = new File(path);
//得到这个路径文件的文件名
String name = f.getName();
//如果是对应type类型的文件,就取,其他的忽略
return name.indexOf(type)!=-1;
}
}
整个实例代码:
package day8yue11;
import java.io.File;
import java.io.FilenameFilter;
public class FileFilterTest {
public static void main(String[] args) {
File file = new File(".");
//这是遍历出这个文件夹里面所有子文件,不过滤
String[] filenames = file.list();
for(String f : filenames)
{
System.out.println(f);
}
System.out.println(".................................................");
//过滤 只要在list()里面传参数,这个参数就是过滤器
String[] filenames1 = file.list(new NameFilter("name"));
for(String name:filenames1)
{
//只过滤到文件名包含"name"的文件或者文件夹
System.out.println(name);
}
}
}
//过滤器
class NameFilter implements FilenameFilter
{
String type;
public NameFilter(String type)
{
this.type = type;
}
//dir应该是父文件夹 name代表父文件夹里面每个子文件完整路径
public boolean accept(File dir, String path) {
File f = new File(path);
//得到这个路径文件的文件名
String name = f.getName();
//如果是对应type类型的文件,就取,其他的忽略
return name.indexOf(type)!=-1;
}
}