Comment lire tous les fichiers d'un dossier en Java

Mohammad Irfan 12 octobre 2023
  1. Comment lire tous les fichiers d’un dossier en Java
  2. Lire tous les fichiers d’un dossier en utilisant la classe Files en Java
  3. Lire tous les fichiers d’un dossier en utilisant la méthode newDirectoryStream() en Java
  4. Lire tous les fichiers d’un dossier en utilisant la méthode walkFileTree() en Java
Comment lire tous les fichiers d'un dossier en Java

Ce tutoriel présente la manière de lire tous les fichiers d’un dossier en Java et donne quelques exemples de codes pour le comprendre.

Il existe plusieurs façons d’obtenir tous les fichiers d’un dossier. Ici, nous pourrions utiliser les classes File, Files et DirectoryStream, et bien d’autres encore. Voyons les exemples.

Comment lire tous les fichiers d’un dossier en Java

Ici, nous utilisons la classe File pour collecter tous les fichiers et dossiers dans le répertoire source, puis nous utilisons la méthode isDirectory() pour vérifier s’il s’agit d’un fichier ou d’un dossier. Voir l’exemple ci-dessous.

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

Lire tous les fichiers d’un dossier en utilisant la classe Files en Java

Si vous voulez utiliser stream, utilisez la méthode walk() de la classe Files qui retourne un stream Path. Après cela, nous utilisons la méthode filter() pour collecter les fichiers uniquement et utilisons forEach() pour les imprimer.

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

Lire tous les fichiers d’un dossier en utilisant la méthode newDirectoryStream() en Java

Ici, nous utilisons la classe Files et sa méthode newDirectoryStream() qui retourne un flux de Path. Ensuite, nous utilisons une boucle for-each pour itérer la liste des fichiers et imprimer le nom du fichier.

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

Lire tous les fichiers d’un dossier en utilisant la méthode walkFileTree() en Java

Ici, nous utilisons la méthode walkFileTree() de la classe Files qui prend deux arguments : le dossier source et la référence SimpleFileVisitor. Voir l’exemple ci-dessous.

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

Article connexe - Java File

Article connexe - Java IO