黑马程序员技术交流社区
标题:
关于FilenameFilter的accept方法
[打印本页]
作者:
王冰
时间:
2012-7-10 23:15
标题:
关于FilenameFilter的accept方法
本帖最后由 王冰 于 2012-7-11 02:08 编辑
public static void listDemo_2()
{
File dir = new File("F:\\javaCode\\day18");
String[] arr = dir.list(new FilenameFilter()//list方法是根据accept方法的返回值来判断是不是所需要的文件
{
public boolean accept(File dir,String name)
{
sop("dir:"+dir+"......name:"+name);//这里打印的是被封装成File的目录和目录下的文件的名称,
//但是FilenameFilter类中具体是怎么样找到目录和文件的一直不明白,有谁能具体说下
return name.endsWith(".class");
}
});
sop("len:"+arr.length);
for (String name : arr)
{
sop(name);
}
}
作者:
丁二跃
时间:
2012-7-10 23:38
这个查看源码可以知道:
先把程序简化下,dir.list( FilenameFilter )
看源代码:
public String[] list(FilenameFilter filter) {
String names[] = list(); //这里调用list方法返回目录下所有文件的名字
if ((names == null) || (filter == null)) {
return names;
}
ArrayList v = new ArrayList();
for (int i = 0 ; i < names.length ; i++) {//这里开始遍历每一个名字
if (filter.accept(this, names[i])) {//调用定义的FilenameFilter 的accept 方法,
// this就是当前目录对象
v.add(names[i]); //如果 返回 true 就 加到列表中
}
}
return (String[])(v.toArray(new String[v.size()]));
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2