Перечислить все файлы с определенным расширением на устройстве

Я хочу найти все файлы, в моем случае PDF-файлы, на устройстве. Теперь я написал этот код:

File images = Environment.getExternalStorageDirectory();
        mImagelist = images.listFiles(new FilenameFilter(){
            public boolean accept(File dir, String name)
            {
                return ((name.endsWith(".pdf")));
            }
        });

Этот код находит только один файл PDF /storage/emulated/0/HTC_One_WWE_User_Guide.pdf. У меня есть несколько других PDF-файлов в моей папке загрузки.

Как я могу решить это?

2 ответа

Решение

Спасибо Хуану.

public void recursiveScan(File f) {
    File[] file = f.listFiles();
    for (File ff : file) {
        if (ff.isDirectory()) recursiveScan(f);
        if (ff.isFile() && ff.getPath().endsWith(".pdf")) {
            Log.d("Debug", ff.toString());
        }
    }
}

Вам просто нужно указать файл var, где искать.

Получить список файлов из каталога внешнего хранилища и повторить указанный список. Это должно позволить вам увидеть, соответствует ли расширение pdf, а затем добавить в список или что вы хотите сделать:

File[] file = Environment.getExternalStorageDirectory().listFiles(); 
for (File f : file){
   if (f.isFile() && f.getpath().endswith(".pdf")) {
      //Add to your list 
   }
}

Насколько я знаю, это не входит в каталоги, поэтому вам нужно обернуть его внутри метода и сделать что-то вроде f.isDirectory() повторно вызвать метод, чтобы пройти через папку.

public void recursiveScan(File f) {
    File[] file = f.listFiles(); 
    for (File f : file){
        if (f.isDirectory()) recursiveScan(f);
        if (f.isFile() && f.getpath().endswith(".pdf")) {
            //Add to your list 
        }
    }
}

Который будет называться что-то вроде recursiveScan(Environment.getExternalStorageDirectory());

Отказ от ответственности: я не проверял это, поэтому некоторые вещи могут быть отключены, но это должно дать вам общее представление о том, как это сделать.

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