web-dev-qa-db-fra.com

Java 8: Récupérer les fichiers du dossier / sous-dossier

J'ai ces dossiers dans le dossier des ressources d'une application SpringBoot.

resources/files/a.txt
resources/files/b/b1.txt
resources/files/b/b2.txt
resources/files/c/c1.txt
resources/files/c/c2.txt

Je veux obtenir tout le fichier txt, voici donc mon code:

   ClassLoader classLoader = this.getClass().getClassLoader();
   Path configFilePath = Paths.get(classLoader.getResource("files").toURI());   

   List<Path> atrackFileNames = Files.list(configFilePath)
                .filter(s -> s.toString().endsWith(".txt"))
                .map(Path::getFileName)
                .sorted()
                .collect(toList());

Mais je ne reçois que le fichier a.txt

7
Files.walk(configFilePath)
     .filter(s -> s.toString().endsWith(".txt"))
     .map(Path::getFileName)
     .sorted()
     .collect(Collectors.toList());
22
Eugene

La méthode Files.list(path) renvoie uniquement le flux de fichiers dans le répertoire. Et la liste des méthodes n'est pas récursive.
Au lieu de cela, vous devez utiliser Files.walk(path). Cette méthode parcourt toutes les arborescences de fichiers enracinées dans un répertoire de départ donné.
Pour en savoir plus:
https://docs.Oracle.com/javase/8/docs/api/Java/nio/file/Files.html#walk-Java.nio.file.Path-Java.nio .file.FileVisitOption ...-

5
Dumbo