Поиск определенных файлов на устройстве - PullRequest
0 голосов
/ 02 мая 2018

Я новичок в мобильном программировании и хочу начать с небольшого приложения Musicplayer. Мне нужно найти все файлы, которые заканчиваются на .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 голосов
/ 02 мая 2018

Полагаю, у вас уже есть путь, по которому вы хотите выполнить поиск файлов, если да, тогда вы можете использовать базовый алгоритм 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());
                }

            } 
        }

    }

надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...