加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java 8流到文件

发布时间:2020-12-14 05:34:59 所属栏目:Java 来源:网络整理
导读:这个问题在这里已经有一个答案: Modify file using Files.lines1 假设我有一个java.util.stream.Stream对象与一些很好的toString方法: 将此流写入文件的最短/最优雅的解决方案是什么?每个流元素一行? 对于阅读,有一个很好的Files.lines方法,所以我认为必
这个问题在这里已经有一个答案:> Modify file using Files.lines1
假设我有一个java.util.stream.Stream对象与一些很好的toString方法:
将此流写入文件的最短/最优雅的解决方案是什么?每个流元素一行?

对于阅读,有一个很好的Files.lines方法,所以我认为必须有一个对称的方法来写入文件,但找不到一个.
Files.write只需要一个迭代.

解决方法

最简单的方法是使用 Files.write与 trick,将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()方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读