2011-08-12 3 views
7

Я использую fileBrowser для поиска файлов на телефоне, но я хотел показать все файлы, которые может открыть мое приложение для пользователя, а затем пользователь выбирает их. Подобно Музыкальному проигрывателю, который показывает все песни на телефоне, на SD-карте и во внутренней памяти, не только те, которые находятся в папке, где находится пользователь.Как найти все файлы с определенным расширением на Android?

ответ

8

Используйте фильтры имени файла при выводе файлов. Ниже пример перечисляет все mp3 файлы в данном каталоге root (Примечание - ниже код не делает это рекурсивно для всех папок под root) -

String files[] = root.list(audioFilter); 

FilenameFilter audioFilter = new FilenameFilter() { 
    File f; 
    public boolean accept(File dir, String name) { 
    if(name.endsWith(".mp3") || name.endsWith(".MP3")) { 
      return true; 
     } 
     f = new File(dir.getAbsolutePath()+"/"+name); 

     return f.isDirectory(); 
    } 
}; 
+0

Большое спасибо. Теперь я пытаюсь сделать это, чтобы получить все файлы в подпапках, и это всего лишь вопрос времени. –

+0

Я считаю, что проверка строки должна быть лучше: name.length()> = 4 && name.subString (name.length-4) .toLowerCase(). Equals (". Mp3") или что-то в этом роде (не проверял) , Причина в том, что вам не нужно будет перебирать строку более одного раза таким образом. –

1

Я не знаю, какую реализацию FileBrowser вы используете, но хороший должен принять FileFilter. Вы можете реализовать свой собственный код предоставления фильтра для public abstract boolean accept (File pathname)

+0

Рави был быстрее, но благодаря вам к. –

Смежные вопросы