【发布时间】:2018-03-14 23:08:57
【问题描述】:
java.nio.ByteBuffer 类有一个ByteBuffer.array() 方法,但是这会返回一个数组,该数组是缓冲区容量的大小,而不是已用容量。因此,我遇到了一些问题。
我有一个字节缓冲区,我将其分配为某种大小,然后我将数据插入到它。
ByteBuffer oldBuffer = ByteBuffer.allocate(SIZE);
addHeader(oldBuffer, pendingItems);
newBuffer.flip();
oldBuffer.put(newBuffer);
// as of now I am sending everything from oldBuffer
send(address, oldBuffer.array());
我怎样才能发送oldBuffer 中正在使用的内容。有没有一种班轮可以做到这一点?
【问题讨论】:
-
修改
send()方法以接受长度(和偏移量)或将实际ByteBuffer作为参数会更简单。你不应该像这样复制数据。
标签: java arrays guava nio bytebuffer