首先你要明白public boolean accept(File dir, String name) 的工作原理 。
该方法就像一个已经封装好了的递归方法,它只便利当前路径下的所有文件(不包含子目录下的文件),目录下有多少个文件,就会便利多少次,如果想要得到子目录下的文件吗,也就是要写一个自己的递归方法嵌套在里面,在递归中写递归,容易会现重复输出,到现在我也没解决这个问题..我的代码......
class MyListFileFilenameFilter implements FilenameFilter{
public boolean accept(File dir, String name) {
//System.out.println(2);
File[] file = dir.listFiles();
for(File filename : file){
if(filename.isDirectory()){
System.out.println(filename);
accept(filename,name);
}
else{
return filename.isFile();
}
}
return true;
}
}
用这个方法实现该功能有很多不便,自己写一个递归更简便。 |