2011-08-12 30 views
7

Estoy usando un fileBrowser para encontrar los archivos en el teléfono, pero quería mostrar todos los archivos que mi aplicación puede abrir al usuario, y luego el usuario elige uno. Como el Reproductor de música, que muestra todas las canciones en el teléfono, en la tarjeta SD y en la memoria interna, no solo las que están en la carpeta donde está el usuario.¿Cómo encontrar todos los archivos con cierta extensión en Android?

Respuesta

8

Utilice los filtros de nombre de archivo mientras enumera los archivos. El ejemplo siguiente enumera todos los archivos mp3 en un directorio dado root (Nota - El código de abajo no lo hace de forma recursiva para todas las carpetas bajo 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

Muchas gracias. Ahora estoy tratando de hacer esto para obtener todos los archivos en las subcarpetas, y es solo cuestión de tiempo. –

+0

Creo que la verificación de cadena debería ser mejor: name.length()> = 4 && name.subString (name.length-4) .toLowerCase(). Equal (". Mp3"), o algo por el estilo (no marcó) . La razón es que no necesitará pasar la cadena más de una vez de esta manera. –

1

No sé qué implementación de FileBrowser está utilizando pero una buena debería aceptar FileFilter. Puede implementar su propio filtro que proporciona el código para public abstract boolean accept (File pathname)

+0

Ravi era más rápido, pero gracias a que lo haga. –

Cuestiones relacionadas