搜索设备上的特定文件

时间:2018-05-02 10:40:53

标签: java android file search

我是移动节目的新手,并希望从一个小型的Musicplayer-App开始。我需要搜索以.mp3,.m4a,.wav等结尾的所有文件。为此,我想首先获取所有文件的列表,然后过滤掉音频文件 但是,当我使用getExternalStorageDirectory获取存储路径时,它返回“/ storage / 3139-6333”,这显然是不正确的。
基本上我只是好奇为什么我得到这个结果以及如何修复它。
假设允许READ_EXTERNAL_STORAGE 提前谢谢。

String state = Environment.getExternalStorageState();
if ((Environment.MEDIA_MOUNTED.equals(state)||Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)))
{
    File sd_card = Environment.getExternalStorageDirectory(); //"/storage/3139-6333"
    File[] listFile = sd_card .listFiles(); //null
}

1 个答案:

答案 0 :(得分:0)

我猜你已经有了你希望进行文件搜索的路径,如果是,那么你可以使用基本的dfs算法来搜索你想要的文件。

下面是示例代码,您可以将任何格式放在最后以检查所有文件。

public void search(String path){

        File file = new File(path);
        File[] files = file.listFiles();

        if (files!=null) {
            for (File f : files) {

                if (f.isDirectory()) {

                    this.search(f.getAbsolutePath());
                }

                if (f.getAbsolutePath().endsWith(".txt")) {

                    System.out.println(f.getAbsolutePath());
                }

            } 
        }

    }
希望这会有所帮助。