我想在scala中创建TCP-IO。数据类型将是bytestring。 然后,我想在scala,intellij,akka 2.3.14中读取一个字节串类型的文件。
答案 0 :(得分:5)
假设您正在谈论akka.util.ByteString
,您可以为整个文件制作1个ByteString:
import akka.util.ByteString
import scala.io.Source
def fileToByteStr(filename : String) : ByteString =
ByteString(Source.fromFile(filename).mkString)
或者,如果您希望文件中的每一行都有1个ByteString,它会懒散地保留在“盘子上”,直到Iterator耗尽:
def fileToMultipleByteStr(filename : String) : Iterator[ByteString] =
Source.fromFile(filename)
.getLines()
.map(ByteString.apply)
如果你想要内存中的数据,你可以将Iterator排到Seq:
val memoryHog = fileToMultipleByteStr("foo.txt").toSeq
答案 1 :(得分:1)
如果您想获得Source[ByteString, _]
的Akka Streams,我建议:
val source = FileIO.fromPath(filename)