对于您所描述的组织,您的搜索/列表开始的目录中将没有媒体文件/media
,您必须导航到子目录,直到您/media/artist/album
从那里到达您可以获取您实际查找的文件。此外,您可能必须向list
方法添加过滤器并实现过滤器的接受方法来踢出缩略图和隐藏的元文件。
这里有一段代码(未经测试)可以帮助你
private final static Set<String> mediaExtensions;
static {
mediaExtensions = new HashSet<String>();
mediaExtensions.add(".mp3");
mediaExtensions.add(".wav");
mediaExtensions.add(".ogg");
// and so on
}
public static void list(File file, List<File> result) {
if(file.isFile()) {
result.add(file);
} else if(file.isDirectory()) {
File files[] = file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
boolean accept = false;
int i = pathname.getName().lastIndexOf('.');
if(i != -1) {
String ext = pathname.getName().substring(i);
accept = (! pathname.isHidden()) &&
mediaExtensions.contains(ext);
}
return accept;
}
});
if(files != null) {
for(File f : files) {
list(f, result);
}
}
}
}