我知道这已被问过几次了,但我无法调整解决方案以使其适合我。 我需要一个字符串数组,它返回目录/ 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++;
}
}
}
答案 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数组中。如果文件是目录,则在子目录上再次调用该方法。这将以递归方式遍历主目录和所有子目录。