从Sdcard获取文件

时间:2014-12-15 20:44:30

标签: java android file

我正在尝试从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中,我得到了阿拉伯歌曲的名字..但我没有得到英文歌曲..

谢谢:)

1 个答案:

答案 0 :(得分:0)

File home。您没有使用homewalkdir(musicPath);。什么是musicPath? ArrayList<File> songs = new ArrayList<File>();。 walkdir()是一个递归函数,因此您为每个递归创建一个新的song。把那行放在walkdir()之外。 .contains(pattern)。更改为.endsWith(pattern)