如何在scala中读取文件作为字节串?

时间:2015-11-09 20:50:58

标签: scala

我想在scala中创建TCP-IO。数据类型将是bytestring。 然后,我想在scala,intellij,akka 2.3.14中读取一个字节串类型的文件。

2 个答案:

答案 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)