java - una - ¿Cómo encontrar los subdirectorios en un directorio/carpeta?
que es dir en java (3)
Puede usar String[] directories = file.list()
para enumerar todos los nombres de archivo, luego use loop para verificar cada subarchivo y use la función file.isDirectory()
para obtener subdirectorios.
Por ejemplo:
File file = new File("C://Windows");
String[] names = file.list();
for(String name : names)
{
if (new File("C://Windows//" + name).isDirectory())
{
System.out.println(name);
}
}
Estoy buscando una forma de obtener todos los nombres de directorios en un directorio determinado, pero no archivos.
Por ejemplo, digamos que tengo una carpeta llamada Parent
, y dentro tengo 3 carpetas: Child1
Child2
y Child3
.
Quiero obtener los nombres de las carpetas, pero no me importan los contenidos o los nombres de las subcarpetas dentro de Child1, Child2, etc.
¿Hay una manera simple de hacer esto?
public static void displayDirectoryContents(File dir) {
try {
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
System.out.println("Directory Name==>:" + file.getCanonicalPath());
displayDirectoryContents(file);
} else {
System.out.println("file Not Acess===>" + file.getCanonicalPath());
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
==== dentro de la clase / Method proporciona File = URL ======
File currentDir = new File("/home/akshya/NetBeansProjects/");
displayDirectoryContents(currentDir);
}
Si está en Java 7, puede intentar usar el soporte provisto en
package java.nio.file
Si su directorio tiene muchas entradas, podrá comenzar a listarlas sin leerlas todas en la memoria primero. lea más en el javadoc: http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#newDirectoryStream(java.nio.file.Path,%20java.lang.String )
Aquí también está ese ejemplo adaptado a sus necesidades:
public static void main(String[] args) {
DirectoryStream.Filter<Path> filter = new DirectoryStream.Filter<Path>() {
@Override
public boolean accept(Path file) throws IOException {
return (Files.isDirectory(file));
}
};
Path dir = FileSystems.getDefault().getPath("c:/");
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, filter)) {
for (Path path : stream) {
// Iterate over the paths in the directory and print filenames
System.out.println(path.getFileName());
}
} catch (IOException e) {
e.printStackTrace();
}
}