Write output of ZIO Stream to file

2.5k Views Asked by At

I am trying to write the results of a ZIO Stream to a file. The following example app takes a sequence of integers, converts them to bytes, compresses them with the gzip transducer, but I cannot figure out how to write them to a file.

I think I need to use ZSink.fromOutputStream, but I am unsure how that fits into the code.

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
}
1

There are 1 best solutions below

1
On BEST ANSWER

I would recommend you to take a closer look to the docs and the api.

It seems you only need to do something like this:

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
}