web-dev-qa-db-ja.com

Java 8:フォルダー/サブフォルダーからファイルを取得する

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

すべてのtxtファイルを取得したいので、これは私のコードです:

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

しかし、私はファイルを取得するだけですa.txt

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

Files.list(path)メソッドは、ディレクトリ内のファイルのストリームのみを返します。また、メソッドのリストは再帰的ではありません。
代わりに、Files.walk(path)を使用する必要があります。このメソッドは、指定された開始ディレクトリをルートとするすべてのファイルツリーをウォークスルーします。
詳細:
https://docs.Oracle.com/javase/8/docs/api/Java/nio/file/Files.html#walk-Java.nio.file.Path-Java.nio .file.FileVisitOption ...-

5
Dumbo