我正在尝试从sdcard获取所有.mp3文件,甚至从子文件夹中获取..这是我使用的代码..
final String MEDIA_PATH = Environment.getExternalStorageDirectory().getPath() + "/";
File home = new File(MEDIA_PATH);
protected void onCreate(Bundle savedInstanceState) {
ArrayList<File> songs = walkdir(home);
}
public ArrayList<File> walkdir(File dir) {
String pattern = ".mp3";
File listFiles[] = dir.listFiles();
ArrayList<File> songs = new ArrayList<File>();
response.setText("listFiles : " + listFiles.length);
if(listFiles != null) {
for(File file : listFiles) {
if(file.isDirectory()) {
walkdir(file);
} else {
/////// Toast \\\\\\\\\\\\
Toast.makeText(MainActivity.this, "File : " + file.getName(), Toast.LENGTH_LONG).show();
if(file.getName().endsWith(pattern)) {
songs.add(file);
////// This doesn't happen...
response.setText("Found Song : " + file.getName());
}
}
}
}
return songs;
}
listFiles.length返回10的奇怪的事情,当我在Toast“评论下Toast文件时,我得到了50多个Toast,还有..我有一个包含40多首歌曲的文件夹阿拉伯语 - 英语..在
在Toast中,我得到了阿拉伯歌曲的名字..但我没有得到英文歌曲..
谢谢:)
答案 0 :(得分:0)
File home
。您没有使用home
。 walkdir(musicPath);
。什么是musicPath? ArrayList<File> songs = new ArrayList<File>();
。 walkdir()是一个递归函数,因此您为每个递归创建一个新的song
。把那行放在walkdir()之外。 .contains(pattern)
。更改为.endsWith(pattern)
。