2011-08-09 7 views
15

Solo una pregunta rápida, cómo obtener una lista de directorios dentro de un directorio específico.android, cómo obtener una lista de directorios?

por ejemplo,

String path = Environment.getExternalStorageDirectory().toString()+"/myApp/"; 

ahora que había necesidad de obtener la lista de directorios que están dentro del directorio "camino".

Gracias!

Respuesta

38

Algo por el estilo (añadir chequeo nula, excepciones, etc ..)

File f = new File(path); 
File[] files = f.listFiles(); 
for (File inFile : files) { 
    if (inFile.isDirectory()) { 
     // is directory 
    } 
} 
+1

Gracias, funciona! :) – Roger

5
File[] files = new File(path).listFiles(); 
for (File aFile : files) 
    if (aFile.isDirectory()) { 
      // so on 

Android referencia de la API de archivos here

+0

Gracias, funciona! :) – Roger

1
LinearLayout root = new LinearLayout(this); 
    File file = new File(Environment.getExternalStorageDirectory().getPath()); 
    if(file.isDirectory() == false) 
    { 
     Toast.makeText(this, "ERROR", Toast.LENGTH_SHORT).show(); 
     return; 
    } 
    File[] files = file.listFiles(); 
    int i = 1; 
    for(File f : files) 
    { 
     if(f.isFile() || f.isDirectory()) 
     { 
      try 
      { 
       LinearLayout layout = new LinearLayout(this); 
       layout.setId(i); 
        Button text = new Button(this); 
        text.setText(f.getName()); 
        text.setMinWidth(400); 
       layout.addView(text); 
       root.addView(layout); 
       i++; 
      } 
      catch(Exception e){} 
     } 
    } 
    LinearLayout layout = new LinearLayout(this); 
    HorizontalScrollView scroll = new HorizontalScrollView(this); 
    scroll.addView(root); 
    layout.addView(scroll); 
    setContentView(layout); 

(Lo siento, no pude probar ...) (debe importar "android.app. ", "android.os.", "android.widget. ", "android.view. "," vista.android.Ver. "," java.io. "

11

Sé que esto ya ha sido contestada, pero me di cuenta de que le falta otra opción, sin duda más simple. Así que estoy incluyendo para futuras referencias.

File myDirectory = new File("path to some directory"); 
File[] directories = myDirectory.listFiles(new FileFilter() { 
    @Override 
    public boolean accept(File pathname) { 
     return pathname.isDirectory(); 
    } 
}); 

Este código le ahorra tener que utilizar un for bucle.

+0

Esto es especialmente útil con Java 8, donde uno simplemente puede escribir 'Directorios de archivos [] = nuevo archivo (" algunos/ruta "). listFiles (File :: isDirectory); ' – iamai

Cuestiones relacionadas