从SD卡(目录上)获取文件列表的好方法是什么?

时间:2010-09-15 08:58:32

标签: android

我很高兴阅读和写入预设文件,并可以手动填充列表视图,但我希望有一个我错过的官方(或不)文件浏览器,或其他更优雅的解决方案来呈现用户使用目录列表,让他们选择一个文件。

3 个答案:

答案 0 :(得分:18)

final String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
File[] files = Environment.getExternalStorageDirectory().listFiles();
} else {
...
}

答案 1 :(得分:17)

File fileList = new File("/sdcard");
if (fileList != null){
    File[] filenames = fileList.listFiles();
        for (File tmpf : filenames){
            //Do something with the files
        }
    }
}

您可以尝试另一种方法

答案 2 :(得分:0)

代码:列出所有音乐文件或文件文件或视频文件,图片,在android中从外部存储到listView。

ArrayList<String> filenames;
ArrayAdapter<String> adapter;
  

// onCreate方法

songlist =  findViewById(R.id.songlist);  //songlist is ListView widget
    filenames = new ArrayList<>();
    getMusic();         // music files funtions
    adapter=new ArrayAdapter<>(YourActivity.this, android.R.layout.simple_list_item_1, filenames);
    songlist.setAdapter(adapter);
  

// getMusic()是从外部存储中获取和过滤所有音乐文件的方法

private void  getMusic() {

    File path = Environment.getExternalStorageDirectory();
    String filename ;
    Queue<File> files = new LinkedList<>();         //Linklist

    files.addAll(Arrays.asList(path.listFiles()));  //adding all files of path in linklist

    while (!files.isEmpty()){
        File file = files.remove();
        if (file.isDirectory()){
            files.addAll(Arrays.asList(file.listFiles()));


        }
        else if (file.getName().endsWith(".mp3")){   //filtering files
            filename = file.getName();               // according to their extension
            filenames.add(filename);              //filenames is string ListArray

        }
        else if (file.getName().endsWith(".ogg")){
            filename = file.getName();
            filenames.add(filename);
        }
        else if (file.getName().endsWith(".amr")){
            filename = file.getName();
            filenames.add(filename);
        }
        else if (file.getName().endsWith(".wav")){
            filename = file.getName();
            filenames.add(filename);
        }
        else if (file.getName().endsWith(".wma")){
            filename = file.getName();
            filenames.add(filename);
        }
        else if (file.getName().endsWith(".flac")){
            filename = file.getName();
            filenames.add(filename);
        }


    }


}
  

只需将(.mp3,.wav)等字符串值更改为   .your_file_extension