Leggi tutti i file di una cartella in Java

Mohammad Irfan 12 ottobre 2023
  1. Come leggere tutti i file di una cartella in Java
  2. Leggere tutti i file di una cartella utilizzando la classe Files in Java
  3. Leggere tutti i file da una cartella utilizzando il metodo newDirectoryStream() in Java
  4. Leggere tutti i file di una cartella utilizzando il metodo walkFileTree() in Java
Leggi tutti i file di una cartella in Java

Questo tutorial introduce come leggere tutti i file di una cartella in Java ed elenca alcuni codici di esempio per comprenderlo.

Esistono diversi modi per ottenere tutti i file di una cartella. Qui potremmo usare le classi File, Files e DirectoryStream e molte altre. Vediamo gli esempi.

Come leggere tutti i file di una cartella in Java

Qui, usiamo la classe File per raccogliere tutti i file e le cartelle nella directory di origine e quindi usiamo il metodo isDirectory() per verificare se si tratta di un file o di una cartella. Vedi l’esempio sotto.

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

Leggere tutti i file di una cartella utilizzando la classe Files in Java

Se vuoi usare stream, usa il metodo walk() della classe Files che restituisce uno stream di Path. Dopodiché, usiamo il metodo filter() per raccogliere solo i file e usiamo forEach() per stamparli.

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

Leggere tutti i file da una cartella utilizzando il metodo newDirectoryStream() in Java

Qui, usiamo la classe Files e il suo metodo newDirectoryStream() che restituisce un flusso di Path. Dopodiché, usiamo un bucle for-each per iterare l’lista dei file e stampare il nome del file.

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

Leggere tutti i file di una cartella utilizzando il metodo walkFileTree() in Java

Qui, usiamo il metodo walkFileTree() della classe Files che accetta due argomenti: la cartella dei sorgenti e il riferimento SimpleFileVisitor. Vedi l’esempio sotto.

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

Articolo correlato - Java File

Articolo correlato - Java IO