将Source [ByteString,Future [IOResult]]转换为List [String]

sbb*_*sbb 2 scala akka akka-stream

我正在尝试读取文件.我需要将这个文件逐行读入列表.

val res: stream.scaladsl.Source[ByteString, Future[IOResult]] = Ftp.fromPath(Paths.get(uri), ftpSettings)
Run Code Online (Sandbox Code Playgroud)

如何将res值转换为List [String]?

Ste*_*tti 6

评论中的流程看起来是一个很好的起点.尝试并针对a运行它Sink.seq.

  val f: Future[Seq[String]] = res
    .via(Framing.delimiter( ByteString("\n"), maximumFrameLength = 256, allowTruncation = true))
    .map(_.utf8String)
    .runWith(Sink.seq)

  val list: Seq[String] = Await.result(f, 10.seconds)
Run Code Online (Sandbox Code Playgroud)