在java

时间:2017-08-15 07:40:03

标签: java iteration bytebuffer

我有问题找到这个问题的解决方案。 我有一个字符的Bytebuffer(确切的文本行),我需要在该缓冲区中找到一个子字符串。 最简单的解决方案是将ByteBuffer转换为字符串,然后使用该字符串,但是该解决方案要求我加倍(至少)我在程序的堆栈(或堆)中使用的内存量,我不希望这样,我宁愿做一些沿着每一行的事情将它转换成字符串,然后使用它。这样做有简单的方法吗? 感谢。

1 个答案:

答案 0 :(得分:1)

您可以从缓冲区中的ByteBuffer个字节读取,直到找到一个分隔线字符或一个不属于String的字符来查找。
您可以使用此方法:

java.nio.ByteBuffer.get(byte[] dst, int offset, int length)

然后将字节转换为String (new String(bytes, yourEncoding)),并检查它是否包含要匹配的String
否则,请阅读以下字节并重复相同的处理。