如何确定 Akka bytestring 是否包含给定的子字符串?

How can I determine if Akka bytestring contains a given substring?

给定一个示例文本文件,如何使用 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)"

您可以使用 containsSlice 来查找子字节串。

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