是的,你可以做到.假设您将路径作为String对象列表,您可以这样做,
List paths = ...;
paths.stream().map(path -> {
try (Stream stream = Files.list(Paths.get(path))) {
return stream.filter(p -> !p.toFile().isDirectory()).filter(p -> p.toString().endsWith(".json"))
.map(Path::toString).collect(Collectors.joining("
"));
} catch (IOException e) {
// Log your ERROR here.
e.printStackTrace();
}
return "";
}).forEach(System.out::println);
如果你需要摆脱换行符,那么它也可以这样做.
paths.stream().map(path -> {
try (Stream stream = Files.walk(Paths.get(path))) {
return stream.filter(p -> !p.toFile().isDirectory()).filter(p -> p.toString().endsWith(".json"))
.map(Path::toString).collect(Collectors.toList());
} catch (IOException e) {
e.printStackTrace();
}
return Collections.emptyList();
}).flatMap(List::stream).forEach(System.out::println);
在这里,您可以获得List中每个路径的所有.json文件名,然后在打印之前将它们展平为String对象的平面流.请注意,此方法涉及的额外步骤是flatMap.