首页
社区
课程
招聘
[旧帖] [求助] 递归调用,有更简单的方法吗 0.00雪花
发表于: 2012-3-17 22:02 1231

[旧帖] [求助] 递归调用,有更简单的方法吗 0.00雪花

2012-3-17 22:02
1231
package server;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

public class MusicManager {
        private static List<String> musics = new ArrayList<String>();

        public static void main(String[] args) {
                try {
                        // 指定遍历路径
                        File file = new File("D:/");
                        // 记录遍历开始时间
                        long start = System.currentTimeMillis();
                        // 进行遍历
                        getAllMusic(file);
                        // 输出遍历用时
                        System.out.println("用时:" + (System.currentTimeMillis() - start)
                                        + " 毫秒");
                        // 显示遍历结果
                        System.out.println("遍历结果:" + musics.size() + " 个文件");
                        for (String path : musics) {
                                System.out.println("\t" + path);
                        }
                } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
        }

        private static void getAllMusic(File inputfile)
                        throws FileNotFoundException {
                // 如果文件无效,进入else块抛异常
                // 如果不想遍历隐藏文件,条件写成
                // inputfile.exists() && !inputfile.isHidden()
                if (inputfile.exists()) {
                        File[] files = inputfile.listFiles();
                        if (files != null) { // 如果是目录,则检查子文件
                                for (File file : files) {
                                        if (file.isDirectory())
                                                // 如果子文件是目录,则继续遍历。如果不想遍历隐藏目录,条件写成
                                                // file.isDirectory() && !file.isHidden()
                                                // 递归调用
                                                getAllMusic(file);
                                        else if (file.isFile()) {
                                                // 如果子文件是标准文件,判断是否为音乐文件。如果不想遍历隐藏文件,条件写成
                                                // file.isFile() && !file.isHidden()
                                                String filename = file.getName().toLowerCase(
                                                                Locale.getDefault());
                                                if (filename.endsWith(".mp3")
                                                                || filename.endsWith(".wma"))
                                                        musics.add(file.getAbsolutePath());
                                        } else
                                                // else if (!file.exists())
                                                System.out.println("分支终止于 " + file + " ,文件不存在!");
                                }
                        } else if (inputfile.isFile()) { // 如果是标准文件,判断是否为音乐文件
                                String filename = inputfile.getName().toLowerCase(
                                                Locale.getDefault());
                                if (filename.endsWith(".mp3") || filename.endsWith(".wma"))
                                        musics.add(inputfile.getAbsolutePath());
                        } else
                                System.out.println("分支终止于 " + inputfile + " ,拒绝访问!");
                } else {
                        throw new FileNotFoundException("文件不存在!" + inputfile);
                }
        }

}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 807
活跃值: (2218)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
虽然看不懂,也得谢谢楼主!
2012-3-17 23:13
0
游客
登录 | 注册 方可回帖
返回
//