将 ZIO Stream 的输出写入文件

Write output of ZIO Stream to file

我正在尝试将 ZIO 流的结果写入文件。下面的示例应用程序采用整数序列,将它们转换为字节,使用 gzip 转换器压缩它们,但我不知道如何将它们写入文件。

我想我需要使用 ZSink.fromOutputStream,但我不确定它如何适合代码。

object ZStreamExample extends zio.App {
  val job = (for {
    stream <- ZStream
      .fromIterable(Seq(1,2,3,4))
      .map(value => s"$value")
      .map(value => value.toByte)
      .transduce(gzip())
  } yield stream)

  def run(args: List[String]) = {
    job.runCollect
  }.exitCode
}

我建议你仔细看看 docs and the api

看来你只需要这样做:

object ZStreamExample extends zio.App {
  val job =
    ZStream
      .fromIterable(Seq(1,2,3,4))
      .map(value => s"$value")
      .map(value => value.toByte)
      .transduce(gzip())
      .run(ZSink.fromFile(Paths.get("file.txt")))

  def run(args: List[String]) =
    job.exitCde
}