我是移动节目的新手,并希望从一个小型的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
}
答案 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());
}
}
}
}
希望这会有所帮助。