如何将一个ByteBuffer附加到其他?

时间:2012-05-31 22:42:45

标签: java java-io bytebuffer

假设我有2个ByteBuffer包含一些字节... 如何将一个ByteBuffer的所有内容追加到其他内容的最佳方法是什么? 我这样做但它抛出一个BufferUnderFlowException:

ByteBuffer allData = ByteBuffer.allocate(999999);
ByteBuffer buff = null;
for (int i = 0; i < n; i++) {
    buff = aMethodThatReturnsAFilledByteBuffer();
    allData.put(buff);
}

我做错了什么? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

在意味着进行flip()操作的任何操作之前,您需要get()源缓冲区,例如write(),或者将其用作put()的来源操作到另一个缓冲区。您还需要compact()之后恢复其状态。

答案 1 :(得分:0)

它是如何工作的:

ByteBuffer.allocate(byteBuffer.limit() + byteBuffer2.limit())
        .put(byteBuffer)
        .put(byteBuffer2)
        .rewind())