Java.nioライブラリからFiles.walk()メソッドを使用してJava 8でストリームを生成しました。問題は、メソッドにデフォルトでルートパスが含まれていることですが、この要素は必要ありません。この場合、filter()メソッドを使用してこのコードで解決しました:
public void listFiles(String directoryPath) {
try {
Path root = Paths.get(directoryPath);
Files.walk(root,1)
.filter(x -> !x.equals(root))
.forEach(System.out::println);
} catch (IOException ex) {
System.err.println("Error reading file: " + directoryPath);
}
}
私の質問は、Streamの最初の要素をこれよりもエレガントに削除する方法があるかどうかです。たとえば、他の関数型言語としてStreamのインデックスまたはtail()メソッドを使用します。
skip(1) を使用して、最初の要素を無視します。
Javadocの免責事項を読むことなく、パラレルストリームで使用しないでください。