我使用Akka FileIO逐行读取文件,如下所示:
def main(args: Array[String]): Unit = {
implicit val system = ActorSystem("MySys")
implicit val materializer = ActorMaterializer()
FileIO.fromPath(Paths.get("/foo/1.csv")).via(Framing.delimiter(ByteString("\n"), 256, true).map(_.utf8String)).runForeach(println)
system.terminate()
}
但是当我运行它时,我看到控制台上没有输出。文件路径正确,文件中有内容。我做错了什么?
答案 0 :(得分:1)
在有机会处理您的文件之前终止AkkaSystem。
做这样的事情
FileIO.fromPath(Paths.get("/foo/1.csv"))
.via {
Framing.delimiter(ByteString("\n"), 256, true).map(_.utf8String)
}
.runForeach(println)
.onComplete{ _ =>
system.terminate()
}
Await.result(system.whenTerminated, Duration.Inf)
答案 1 :(得分:0)
问题是你不要等到Future
完成并且你的程序完成之前。你可以解决它:
def main(args: Array[String]): Unit = {
implicit val system = ActorSystem("MySys")
implicit val materializer = ActorMaterializer()
val future = FileIO.fromPath(Paths.get("/foo/1.csv")).via(Framing.delimiter(ByteString("\n"), 256, true).map(_.utf8String)).runForeach(println)
import scala.concurrent.Await
import scala.concurrent.duration.Duration
Await.result(future, Duration.Inf)
}