黑马程序员技术交流社区

标题: 如何列出指定目录文件并进行过滤 [打印本页]

作者: 马林康    时间: 2012-7-18 14:58
标题: 如何列出指定目录文件并进行过滤
本帖最后由 马林康 于 2012-7-18 15:52 编辑
  1. import java.io.File;
  2. import java.io.FilenameFilter;

  3. public class FileDemo {
  4.         public static void main(String[] args){
  5.                 File f = new File("E:\\music");
  6.                 showDir(f);
  7.         }
  8.         public static void showDir(File f){
  9.                 File[] files = f.listFiles(new FilenameFilter(){
  10.                         @Override
  11.                         public boolean accept(File dir, String name) {
  12.                                 return name.endsWith(".mp3");
  13.                                 }
  14.                
  15.                 });
  16.                 for(File file:files){
  17.                         if(file.isDirectory())
  18.                                 showDir(file);
  19.                         else
  20.                                 System.out.println(file);
  21.                 }
  22.                
  23.         }
  24. }
复制代码
这样貌似实现不了,请问怎么实现?

作者: 孙新强    时间: 2012-7-18 15:40
在这里 我建议不用匿名内部类 因为要遍历文件 使用匿名内部类 操作不方便
最好使用递归遍历
程序代码修改如下 :
import java.io.File;
public class FileDemo {
        public static void main(String[] args){
                File f = new File("E:\\music");
                showDir(f);
        }
        public static void showDir(File f){
        
                        if (!f.exists()) {                             // 测试此抽象路径名表示的文件或目录是否存在
                            throw new RuntimeException("文件不存在,请重新输入!");
                             }
                          else if (f.isDirectory()){
                            File[] files = f.listFiles();
                            if (files != null){
                            for (File file : files){                         // 对数组进行遍历
                              showDir(file);
                              }
                            }
                            }
                          else if (f.getName().endsWith(".mp3")) {
                             System.out.println(f);
                          }

  }
}
作者: 马林康    时间: 2012-7-18 15:49
孙新强 发表于 2012-7-18 15:40
在这里 我建议不用匿名内部类 因为要遍历文件 使用匿名内部类 操作不方便
最好使用递归遍历
程序代码修改 ...

谢谢了~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2