假设我有2个ByteBuffer包含一些字节... 如何将一个ByteBuffer的所有内容追加到其他内容的最佳方法是什么? 我这样做但它抛出一个BufferUnderFlowException:
ByteBuffer allData = ByteBuffer.allocate(999999);
ByteBuffer buff = null;
for (int i = 0; i < n; i++) {
buff = aMethodThatReturnsAFilledByteBuffer();
allData.put(buff);
}
我做错了什么? 提前谢谢。
答案 0 :(得分:0)
在意味着进行flip()
操作的任何操作之前,您需要get()
源缓冲区,例如write()
,或者将其用作put()
的来源操作到另一个缓冲区。您还需要compact()
之后恢复其状态。
答案 1 :(得分:0)
它是如何工作的:
ByteBuffer.allocate(byteBuffer.limit() + byteBuffer2.limit())
.put(byteBuffer)
.put(byteBuffer2)
.rewind())