从ByteBuffer读取前四个字节,然后将它们写回来?

时间:2015-11-27 14:41:31

标签: java bytearray bytebuffer

我有一个名为msg的ByteBuffer对象,其前四个字节的预期消息长度如下所示:

    int msgLen = msg.getInt();
    LOG.debug("Message size: " + msgLen);

如果msgLen小于某个阈值,我会收到部分消息并需要缓存。在这种情况下,我想把前四个字节放回到消息的开头;也就是说,将消息重新组合在一起,使其与预读相同。例如:

if (msgLen < threshold) {
    msg.rewind();
    msg.put(msgLen);

不幸的是,这似乎不是正确的方法。我尝试了很多翻转,放置和倒带的组合,但一定是误会。

如何将字节按原始顺序放回写缓冲区?

1 个答案:

答案 0 :(得分:0)

答案由Andremoniy在评论部分发布。读操作不会消耗缓冲区中的字节,因此msg.rewind()就足够了。由于程序中的某些其他逻辑,这在我的情况下不起作用,并且我错误地将其与缓冲级别的问题相关联。