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
Files.walk(configFilePath)
.filter(s -> s.toString().endsWith(".txt"))
.map(Path::getFileName)
.sorted()
.collect(Collectors.toList());
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 ...-