Como ler todos os arquivos de uma pasta em Java

Mohammad Irfan 12 outubro 2023
  1. Como ler todos os arquivos de uma pasta em Java
  2. Leia todos os arquivos de uma pasta utilizando a classe Files em Java
  3. Leia todos os arquivos de uma pasta utilizando o newDirectoryStream() metodo em Java
  4. Leia todos os arquivos de uma pasta utilizando o método walkFileTree() em Java
Como ler todos os arquivos de uma pasta em Java

Este tutorial introduz como ler todos os arquivos de uma pasta em Java e lista alguns exemplos de códigos para entendê-la.

Há várias maneiras de obter todos os arquivos de uma pasta. Aqui podemos utilizar as classes File, Files e DirectoryStream, e muitas outras. Vamos ver os exemplos.

Como ler todos os arquivos de uma pasta em Java

Aqui, utilizamos a classe File para coletar todos os arquivos e pastas no diretório de origem e depois utilizamos o método isDirectory() para verificar se se trata de um arquivo ou pasta. Veja o exemplo abaixo.

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);
  }
}

Leia todos os arquivos de uma pasta utilizando a classe Files em Java

Se você quiser utilizar o Stream, utilize o método walk()de classe Files que retorna um Path Stream. Depois disso, utilizamos o método filter() para coletar somente arquivos e utilizamos forEach() para imprimi-los.

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);
    }
  }
}

Leia todos os arquivos de uma pasta utilizando o newDirectoryStream() metodo em Java

Aqui, utilizamos a classe Files e seu método newDirectoryStream() que retorna um fluxo de Path. Depois disso, utilizamos um loop for-each para iterar a lista de arquivos e imprimir o nome do arquivo.

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);
    }
  }
}

Leia todos os arquivos de uma pasta utilizando o método walkFileTree() em Java

Aqui, utilizamos o método walkFileTree() da classe Files que leva dois argumentos: a pasta de origem e a referência SimpleFileVisitor. Veja o exemplo abaixo.

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);
  }
}

Artigo relacionado - Java File

Artigo relacionado - Java IO