El siguiente código proporciona un método para recorrer de forma recursiva un directorio en Java. También imprime la jerarquía de directorios con sangría.
package com.programcreek; import java.io.File; import org.apache.commons.lang3.StringUtils; public class LoopThroughADirectory { public static void main(String[] args) { File[] files = new File("/home/programcreek/Desktop").listFiles(); showFiles(files); } public static void showFiles(File[] files) { for (File file : files) { if (file.isDirectory()) { printIndent(StringUtils.countMatches(file.getAbsolutePath(), "/")-3); System.out.println("Directory: " + file.getName()); showFiles(file.listFiles()); // recursively call itself } else { printIndent(StringUtils.countMatches(file.getAbsolutePath(), "/")-3); System.out.println("File: " + file.getName()); } } } public static void printIndent(int count){ for(int i=0; i<count; i++){ System.out.print("-----"); } } } |
Producción:
—– Directorio: log4j
———- Archivo: log.out
———- Archivo: filec.out
———- Archivo: fileb.out
———- Archivo: filea.out
—– Archivo: archivo1
—– Archivo: archivo2
———- Archivo: log.out
———- Archivo: filec.out
———- Archivo: fileb.out
———- Archivo: filea.out
—– Archivo: archivo1
—– Archivo: archivo2