ByteBuffer下溢

时间:2014-05-15 12:54:26

标签: java bytebuffer

我尝试使用java libary ByteBuffer并编写以下代码示例:

    ByteBuffer buf = ByteBuffer.allocate(32);
    buf.putInt(4);
    buf.putInt(8);
    buf.putInt(12);
    buf.putInt(16);
    buf.putInt(20);
    buf.putInt(24);
    buf.putInt(28);
    buf.putInt(32);
    buf.order(ByteOrder.LITTLE_ENDIAN);
    byte[] temp = new byte[32];
    buf.get(temp);

由于某种原因,它会在最后一行抛出BufferUnderflowException

我不知道为什么,有人可以解释我的错误吗?

2 个答案:

答案 0 :(得分:4)

如java docs

中所述
  

相对get方法。   ...

     

抛出:   BufferUnderflowException如果缓冲区的当前位置不小于其限制

查找更多here

答案 1 :(得分:2)

查看http://mindprod.com/jgloss/bytebuffer.html

你必须调用ByteBuffer.flip来转换从通过物理I / O填充缓冲区到通过ByteBuffer.get清空它。