【问题标题】:Convert Source[ByteString, Future[IOResult]] to List[String]将 Source[ByteString, Future[IOResult]] 转换为 List[String]
【发布时间】:2016-12-09 22:03:09
【问题描述】:

我正在尝试读取文件。我需要将这个文件逐行读取到一个列表中。

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

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

【问题讨论】:

  • 我已经尝试过这些流程。但我不想要一个字符串,我想得到 List[String] res.via(Framing.delimiter( ByteString("\n"), maximumFrameLength = 256, allowTruncation = true)) .map(_.utf8String)

标签: scala akka akka-stream


【解决方案1】:

您评论中的流程看起来是一个很好的起点。 尝试针对 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-07
    • 2017-11-15
    • 2019-11-20
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    • 2021-01-21
    相关资源
    最近更新 更多