Java 8 流到文件

2022-09-01 03:46:11

假设我有一个对象和一些不错的方法:将此流写入文件的最短/最优雅的解决方案是什么,每个流元素一行?java.util.stream.StreamtoString

对于阅读,有一个很好的方法,所以我认为一定有一个对称的方法写入文件,但找不到一个。 只接受可迭代。Files.linesFiles.write


答案 1

也许最短的方法是使用 Files.write 以及将 转换为StreamIterable

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()


答案 2

推荐