列出从目录递归的所有.mp3文件

时间:2014-06-12 13:13:25

标签: java android arrays mp3

我知道这已被问过几次了,但我无法调整解决方案以使其适合我。 我需要一个字符串数组,它返回目录/ music /及其所有子目录中每个mp3的绝对路径。

我发现了这个:

public void getMp3s(ArrayList<File> list, File dir){
    File[] files = dir.listFiles();

     for(File file : files){
        if(file.isDirectory()){
            getMp3s(list, file);
        }else{

        }
    }
}

我需要的是返回musiclist []的方法,其中包含mp3文件的绝对路径。 (试验/ testsub / Song.mp3的) (如果它返回不是.mp3的文件,那就没问题了)

编辑:

像这样:?

getMp3s(ArrayList<File> list, File dir,int i, String[] musiclist){
    File[] files = dir.listFiles();

     for(File file : files){
        if(file.isDirectory()){
            getMp3s(list, file,i, musiclist);
        }else{
           musiclist[i] = file.getAbsolutePath();
           i++;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

在你的函数之外,声明一个arraylist来存储Mp3路径

ArrayList<String> mp3Paths = new ArrayList();

创建一个方法,它将返回给定目录(包括子目录)中的mp3

void getMp3s(File f) {
    File[] files;
    if (f.isDirectory() && (files = f.listFiles()) != null) {
        for (File file : files) {
            getMp3s(file);
        }
    }
    else {
        String path = f.getPath();
        if (path.endsWith(".mp3")) {
            mp3Paths.add(f.getPath());
        }
    }
}

上述方法递归搜索目录。首先给它一个初始目录。列出该文件中的所有内容。如果文件不是目录,则对“.mp3”检查扩展名,如果找到则添加到mp3数组中。如果文件是目录,则在子目录上再次调用该方法。这将以递归方式遍历主目录和所有子目录。