A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 庄星睿 中级黑马   /  2012-7-7 10:42  /  1636 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 庄星睿 于 2012-7-7 11:50 编辑

要遍历一个目录下所有扩展名为.java文件,用文件过滤器问题:
  1. import java.io.*;

  2. class Test1
  3. {
  4. public static void main(String[] args)
  5. {
  6. //listRoots();
  7. //list1();
  8. //list2();
  9. File ff=new File("f:\\diary");
  10. list4(ff);

  11. }
  12. public static void list4(File file)
  13. {
  14. File[] arr=file.listFiles(new FilenameFilter()
  15. {
  16. public boolean accept(File dir,String name)
  17. {
  18. return name.endsWith(".java");  //判断扩展名。java,返回ture

  19. }

  20. });

  21. for(File f : arr)
  22. {
  23. if(f.isDirectory())  //如果是目录,递归
  24.       list4(f);  
  25. else
  26. System.out.println(f);

  27. }

  28. }

  29. public static void list3(File file)
  30. {

  31. File[] arr=file.listFiles(new FileFilter()
  32. {
  33. public boolean accept(File pathname)
  34. {
  35. return pathname.getName().endsWith(".java");
  36. }

  37. });

  38. for (File ff : arr)
  39. {
  40. if(ff.isDirectory())
  41. list3(ff);
  42. else
  43. System.out.println(ff);
  44. }


  45. }
复制代码
在遍历数组的过程中,加了判断,如果是目录,递归,会先遍历diary内的目录,如果不是目录就按照 过滤器返回的结果进行打印,但是结果只能遍历到当前diary目录下的.java文件,不能打印所有的.java文件,这里为什么用文件过滤器不行?

1 个回复

倒序浏览
本帖最后由 淡然 于 2012-7-7 11:22 编辑
  1. public static void list4(File file)
  2. {
  3. File[] arr=file.listFiles(new FilenameFilter(){       //返回的的File都是java文件,已经过滤掉目录了
  4. public boolean accept(File dir,String name)
  5. {
  6. return name.endsWith(".java"); //判断扩展名。java,返回ture
  7. }
  8. });

  9. for(File f : arr)
  10. {
  11. if(f.isDirectory()) //arr都是java文件,已经过滤掉目录了,这里已经没有意义了
  12. list4(f);
  13. else
  14. System.out.println(f);
  15. }
  16. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马