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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马林康 中级黑马   /  2012-7-18 14:58  /  1427 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 马林康 于 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. }
复制代码
这样貌似实现不了,请问怎么实现?

2 个回复

倒序浏览
在这里 我建议不用匿名内部类 因为要遍历文件 使用匿名内部类 操作不方便
最好使用递归遍历
程序代码修改如下 :
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);
                          }

  }
}

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
孙新强 发表于 2012-7-18 15:40
在这里 我建议不用匿名内部类 因为要遍历文件 使用匿名内部类 操作不方便
最好使用递归遍历
程序代码修改 ...

谢谢了~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马