Cómo leer todos los archivos de una carpeta en Java
- Cómo leer todos los archivos de una carpeta en Java
-
Leer todos los archivos de una carpeta usando la clase
Files
en Java -
Leer todos los archivos de una carpeta usando el método
newDirectoryStream()
en Java -
Leer todos los archivos de una carpeta usando el método
walkFileTree()
en Java
Este tutorial introduce cómo leer todos los archivos de una carpeta en Java y enumera algunos códigos de ejemplo para entenderlo.
Hay varias maneras de obtener todos los archivos de una carpeta. Aquí podríamos usar las clases File
, Files
y DirectoryStream
, y muchas más. Veamos los ejemplos.
Cómo leer todos los archivos de una carpeta en Java
Aquí, usamos la clase File
para recoger todos los archivos y carpetas en el directorio de origen y luego usamos el método isDirectory()
para comprobar si es un archivo o una carpeta. Vea el ejemplo a continuación.
import java.io.File;
import java.text.ParseException;
public class SimpleTesting {
public static void findAllFilesInFolder(File folder) {
for (File file : folder.listFiles()) {
if (!file.isDirectory()) {
System.out.println(file.getName());
} else {
findAllFilesInFolder(file);
}
}
}
public static void main(String[] args) throws ParseException {
File folder = new File("/home/folder/src");
findAllFilesInFolder(folder);
}
}
Leer todos los archivos de una carpeta usando la clase Files
en Java
Si quieres usar stream, usa el método walk()
de la clase Files
que devuelve un stream path
. Después de eso, usamos el método filter()
para recoger los archivos solamente y usamos forEach()
para imprimirlos.
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Stream;
public class SimpleTesting {
public static void main(String[] args) throws IOException {
try (Stream<Path> paths = Files.walk(Paths.get("/home/folder/src"))) {
paths.filter(Files::isRegularFile).forEach(System.out::println);
}
}
}
Leer todos los archivos de una carpeta usando el método newDirectoryStream()
en Java
Aquí, usamos la clase Files
y su método newDirectoryStream()
que devuelve un flujo de Path
. Después de eso, usamos un bucle for-each
para iterar la lista de archivos e imprimir el nombre del archivo.
import java.io.IOException;
import java.nio.file.DirectoryIteratorException;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class SimpleTesting {
public static void main(String[] args) throws IOException {
try (DirectoryStream<Path> stream = Files.newDirectoryStream(Paths.get("/home/folder/src/"))) {
for (Path file : stream) {
System.out.println(file.getFileName());
}
} catch (IOException | DirectoryIteratorException ex) {
System.err.println(ex);
}
}
}
Leer todos los archivos de una carpeta usando el método walkFileTree()
en Java
Aquí, usamos el método walkFileTree()
de la clase Files
que toma dos argumentos: la carpeta de origen y la referencia SimpleFileVisitor
. Mira el ejemplo de abajo.
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
public class SimpleTesting {
public static void main(String[] args) throws IOException {
SimpleFileVisitor<Path> file = new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path filePath, BasicFileAttributes attrs)
throws IOException {
System.out.println(filePath);
return FileVisitResult.CONTINUE;
}
};
Files.walkFileTree(Paths.get("/home/folder/src"), file);
}
}
Artículo relacionado - Java File
- Cómo eliminar los saltos de línea de un archivo en Java
- Cerrar un archivo en Java
- Archivos comprimidos en Java
- Comparar contenido de dos archivos en Java
- Crear y ejecutar un archivo JAR de Java
- Eliminar archivos en un directorio usando Java