给定一个示例文本文件,如何使用Akka ByteStrings并将其转换为纯文本或在ByteString本身上运行“find”?
val file = new File("sample.txt")
val fileSource = SynchronousFileSource(file, 4096)
val messageStream = fileSource.map(chunk => sendMessage(chunk.toString()))
messageStream.to(Sink.foreach(println(_))).run
上面的“toString()”函数实际上吐出一个包含文本“ByteString”的字符串,后跟表示为整数的字节。例如:
chunk.toString() ==> "ByteString(111, 112, 119, 111)"
答案 0 :(得分:6)
您可以使用containsSlice
查找sub ByteString。
scala> import akka.util.ByteString;
import akka.util.ByteString
scala> val target = ByteString("hello world");
target: akka.util.ByteString = ByteString(104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100)
scala> val sub = ByteString("world")
sub: akka.util.ByteString = ByteString(119, 111, 114, 108, 100)
scala> target.containsSlice(sub)
res0: Boolean = true
如果您想将akka.util.ByteString
转换为String
,可以使用decodeString
scala> ByteString("hello").decodeString("UTF-8")
res3: String = hello
有关详细信息,请参阅文档:http://doc.akka.io/api/akka/2.3.13/index.html#akka.util.ByteString