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

时间:2015-10-02 02:09:15

标签: scala akka bytestring

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

1 个答案:

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