2016-01-04 15 views
5

でルートから再帰的にすべてのファイルを追加します。私は単にリストに指定したフォルダ内のすべての子項目を追加し、次の再帰的な方法を持っていますJava 8 Stream API?は、Java 8ストリーム

答えて

5

Files.walk(start, options...)を使用すると、ファイルツリーを再帰的に処理できます。このメソッドは、PathからなるStream<Path>を返します。

戻りなまけ与え始まるファイルをルートファイルツリーを歩いてPathが移入されStream。ファイルツリーは、の深さ - 最初のを走査し、ストリーム内の要素は、Pathのオブジェクトで、あたかも相対パスをstartと解決したかのように取得されます。 optionsの中

private List<TemplateFile> readTemplateFiles(String nextTemplateDir, String rootTemplateDir) throws FileNotFoundException { 
    return Files.walk(Paths.get(nextTemplateDir)) 
       .filter(path -> !path.getFileName().startsWith(".")) 
       .map(path -> TemplateFile.create(path.toFile(), rootTemplateDir)) 
       .collect(Collectors.toList()); 
} 

、シンボリックリンクをたどりますFOLLOW_LINKSがあります。

関連する問題