【问题标题】:Searching for specific files on a device在设备上搜索特定文件
【发布时间】:2018-05-02 10:40:53
【问题描述】:

我是移动编程的新手,想从一个小的 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
}

【问题讨论】:

  • 您是否询问过READ_EXTERNAL_STORAGE 使用用户SD 卡的权限? (你也应该把它添加到你的manifest.xml
  • @Nofix 我的问题总体上很古怪,我希望我设法改进它。
  • 您获得的存储名称对我来说听起来绝对正确。在我的设备上,它非常相似。

标签: java android file search


【解决方案1】:

我猜你已经有了想要进行文件搜索的路径,如果是,那么你可以使用基本的 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());
                }

            } 
        }

    }

希望这会有所帮助。

【讨论】:

  • 我重写了我的问题,以便更清楚我的兴趣是什么;但是,这个答案非常适合实际搜索!
猜你喜欢
  • 2010-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多