Поиск определенных файлов на устройстве

Я новичок в мобильном программировании и хочу начать с небольшого приложения 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
}

Вы спрашивали у READ_EXTERNAL_STORAGE разрешение на использование SD-карты пользователя? (Вы также должны добавить его на свой manifest.xml)

Nofix 02.05.2018 12:44

@Nofix В целом мой вопрос был довольно странным, надеюсь, мне удалось его улучшить.

Daniel Kargl 03.05.2018 18:46

Имя хранилища, которое вы получаете взамен, мне кажется абсолютно правильным. На моем устройстве это очень похоже.

Nofix 03.05.2018 19:25
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
36
1

Ответы 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());
                }

            } 
        }

    }

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

Я переписал свой вопрос, чтобы было понятнее, в чем мой интерес; однако этот ответ отлично подходит для фактического поиска!

Daniel Kargl 03.05.2018 18:51

Другие вопросы по теме