Чтение всех файлов в файловой системе Android - PullRequest
5 голосов
/ 11 августа 2011

Я пишу приложение для Android mediaPlayer, поэтому я хочу сканировать все файлы на всем телефоне (т. Е. На SD-карте и в памяти телефона). Я могу читать с SDCard, но не в корне. То есть я могу просто прочитать по пути /sdcard/[folder]/, и он работает нормально, но если перейти к /sdcard/, приложение вылетает. Как я могу получить доступ ко всем файлам на SD-карте, а также к файлам на самом телефоне?

1 Ответ

9 голосов
/ 11 августа 2011

Никогда не используйте / sdcard / path. это не гарантировано работать все время.

Используйте приведенный ниже код, чтобы получить путь к каталогу SDCard.

File root = Environment.getExternalStorageDirectory();
String rootPath= root.getPath();

Из папки rootPath вы можете указать путь к любому файлу на SD-карте. Например, если изображение находится в /DCIM/Camera/a.jpg, то абсолютный путь будет rootPath + "/DCIM/Camera/a.jpg".

.

Однако, чтобы просмотреть все файлы на SDCard, вы можете использовать следующий код

String listOfFileNames[] = root.list(YOUR_FILTER);

listOfFileNames будет содержать имена всех файлов, присутствующих на SD-карте, и соответствовать критериям, установленным фильтром.

Предположим, вы хотите перечислить только mp3-файлы, а затем передать имя класса фильтра ниже функции list ().

FilenameFilter mp3Filter = new FilenameFilter() {
File f;
    public boolean accept(File dir, String name) {

        if(name.endsWith(".mp3")){
        return true;
        }

        f = new File(dir.getAbsolutePath()+"/"+name);

        return f.isDirectory();
    }
};

Шаша

...