2015-10-02 4 views
2

Учитывая пример текстового файла, как можно использовать Akka ByteStrings и преобразовать его в обычный текст или запустить «найти» на самой байтовой строке?Как я могу определить, содержит ли Akck bytestring заданную подстроку?

  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()» функциональность выше буквально выкладывает строку, содержащую текст «байтовой строки», за которым следует байт, представленных в виде целых чисел. Например:

  chunk.toString() ==> "ByteString(111, 112, 119, 111)" 

ответ

6

Вы можете использовать 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

+1

совершенны, нашел в документации и вернулся к сообщению назад .. вот и вот, уже решена! Благодарю. –