首先,普通导包:
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.stream.Stream;
主体函数代码:
private static Stream<File> traverseFilesRecursively(Stream<Path> fileStream) {
return fileStream.flatMap((Path path) -> {
if ( Files.isDirectory(path) ) {
try {
return traverseFilesRecursively(Files.list(path));
} catch (IOException e) {
throw new RuntimeException(e);
}
} else return Stream.of(path.toFile());
});
}
注意!此函数不会将文件夹当作文件来看待,最后输出的Stream里头,只含有文件。这种遍历方式,应该属于是一种「Depth First Search深度优先遍历」。