在jdk的File的list方法里传入一个FilenameFilter的接口参数,使用时需要实现该接口。
list
public String[] list(FilenameFilter filter)
public String[] list(FilenameFilter filter)
以下代码是给定一个目录,检查该目录下有多少个子目录,并列出目录名。
class
DirFilter
...
{
public static void main(String[] args) ...{
if (1 != args.length)
throw new IllegalArgumentException("need a dir");
File file = new File(args[0]);
/** *//**
* File的list方法会传入file目录及file目录下的文件名循环调用FileFilenameFilter的accept方法,
* 并把符合是目录的文件名存入dirs中。
*/
String[] dirs = file.list(new FilenameFilter() ...{
public boolean accept(File dir, String file) ...{
return new File(dir, file).isDirectory();
}
});
System.out.println(dirs.length + " dir(s)");
for (String dir : dirs)
System.out.print(" " + dir);
}
}
public static void main(String[] args) ...{
if (1 != args.length)
throw new IllegalArgumentException("need a dir");
File file = new File(args[0]);
/** *//**
* File的list方法会传入file目录及file目录下的文件名循环调用FileFilenameFilter的accept方法,
* 并把符合是目录的文件名存入dirs中。
*/
String[] dirs = file.list(new FilenameFilter() ...{
public boolean accept(File dir, String file) ...{
return new File(dir, file).isDirectory();
}
});
System.out.println(dirs.length + " dir(s)");
for (String dir : dirs)
System.out.print(" " + dir);
}
}
代码中以下代码就是一个实现了FilenameFilter接口的匿名类,实现了accept(File dir,String file)方法。
new
FilenameFilter()
...
{
public boolean accept(File dir, String file) ...{
return new File(dir, file).isDirectory();
}
public boolean accept(File dir, String file) ...{
return new File(dir, file).isDirectory();
}