Java 在Rx中将ByteBuffer流转换为行的有效方法

Java 在Rx中将ByteBuffer流转换为行的有效方法,java,nio,reactive-programming,rx-java,Java,Nio,Reactive Programming,Rx Java,我想通过按行尾字符拆分将可观察的转换为行(可观察的)。如果我们有像toString、concat和splitByLine这样的函数,我们必须能够执行以下操作: 可观测o=。。。; o、 map(toString).reduce(concat).flatMap(splitByLine); 然而,该算法需要先扫描整个字节并将其存储在内存中,然后才能实际发出反序列化字符串的第一行。如何在每次行尾以递增方式出现在字节中时发出新行?我终于找到了答案。它为我们提供了Rx操作符来处理分块的字节数组和字符串流

我想通过按行尾字符拆分将
可观察的
转换为行(
可观察的
)。如果我们有像
toString
concat
splitByLine
这样的函数,我们必须能够执行以下操作:

可观测o=。。。;
o、 map(toString).reduce(concat).flatMap(splitByLine);
然而,该算法需要先扫描整个字节并将其存储在内存中,然后才能实际发出反序列化字符串的第一行。如何在每次行尾以递增方式出现在字节中时发出新行?

我终于找到了答案。它为我们提供了Rx操作符来处理分块的字节数组和字符串流。找到API文档

可通过以下方式解决该问题:

可观测o=。。。;
Charset Charset=Charset.forName(“UTF-8”);
//StringObservable还没有ByteBuffer的运算符
StringObservable.byLine(StringObservable.decode(o,字符集));