我尝试使用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。
我不知道为什么,有人可以解释我的错误吗?
答案 0 :(得分:4)
答案 1 :(得分:2)
查看http://mindprod.com/jgloss/bytebuffer.html
你必须调用ByteBuffer.flip来转换从通过物理I / O填充缓冲区到通过ByteBuffer.get清空它。