Ответ 1
Возможно, самый короткий путь - использовать Files.write
вместе с трюком который преобразует Stream
в Iterable
:
Files.write(Paths.get(filePath), (Iterable<String>)stream::iterator);
Например:
Files.write(Paths.get("/tmp/numbers.txt"),
(Iterable<String>)IntStream.range(0, 5000).mapToObj(String::valueOf)::iterator);
Если он выглядит слишком хакерским, используйте более явный подход:
try(PrintWriter pw = new PrintWriter(Files.newBufferedWriter(
Paths.get("/tmp/numbers.txt")))) {
IntStream.range(0, 5000).mapToObj(String::valueOf).forEach(pw::println);
}
Если у вас есть поток некоторых пользовательских объектов, вы всегда можете добавить шаг .map(Object::toString)
для применения метода toString()
.