我想转换fs2.Stream
为,java.io.InputStream
以便可以将该输入流传递给 http 框架(Finch 和 Akka Http)。
我找到了 a fs2.io.toInputStream
,但这不起作用(它什么也不打印):
import java.io.{ByteArrayInputStream, InputStream}
import cats.effect.IO
import scala.concurrent.ExecutionContext.Implicits.global
object IOTest {
def main(args: Array[String]): Unit = {
val is: InputStream = new ByteArrayInputStream("test".getBytes)
val stream: fs2.Stream[IO, Byte] = fs2.io.readInputStream(IO(is), 128)
val test: Seq[InputStream] = stream.through(fs2.io.toInputStream).compile.toList.unsafeRunSync()
println(scala.io.Source.fromInputStream(test.head).mkString)
}
}
据我了解,当我运行.unsafeRunSync()
它时,它会消耗整个流,所以即使它返回一个Seq[InputStream]
底层输入流也已经被消耗了。
有什么方法可以在不消耗的情况下转换fs2.Stream[IO, Byte]
为?java.io.InputStream
谢谢!