黑马程序员技术交流社区
标题:
递归疑问
[打印本页]
作者:
庄星睿
时间:
2012-7-7 10:42
标题:
递归疑问
本帖最后由 庄星睿 于 2012-7-7 11:50 编辑
要遍历一个目录下所有扩展名为.java文件,用文件过滤器问题:
import java.io.*;
class Test1
{
public static void main(String[] args)
{
//listRoots();
//list1();
//list2();
File ff=new File("f:\\diary");
list4(ff);
}
public static void list4(File file)
{
File[] arr=file.listFiles(new FilenameFilter()
{
public boolean accept(File dir,String name)
{
return name.endsWith(".java"); //判断扩展名。java,返回ture
}
});
for(File f : arr)
{
if(f.isDirectory()) //如果是目录,递归
list4(f);
else
System.out.println(f);
}
}
public static void list3(File file)
{
File[] arr=file.listFiles(new FileFilter()
{
public boolean accept(File pathname)
{
return pathname.getName().endsWith(".java");
}
});
for (File ff : arr)
{
if(ff.isDirectory())
list3(ff);
else
System.out.println(ff);
}
}
复制代码
在遍历数组的过程中,加了判断,如果是目录,递归,会先遍历diary内的目录,如果不是目录就按照 过滤器返回的结果进行打印,但是结果只能遍历到当前diary目录下的.java文件,不能打印所有的.java文件,这里为什么用文件过滤器不行?
作者:
淡然
时间:
2012-7-7 10:55
本帖最后由 淡然 于 2012-7-7 11:22 编辑
public static void list4(File file)
{
File[] arr=file.listFiles(new FilenameFilter(){ //返回的的File都是java文件,已经过滤掉目录了
public boolean accept(File dir,String name)
{
return name.endsWith(".java"); //判断扩展名。java,返回ture
}
});
for(File f : arr)
{
if(f.isDirectory()) //arr都是java文件,已经过滤掉目录了,这里已经没有意义了
list4(f);
else
System.out.println(f);
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2