字节的缓冲区我想要的ByteBuffers添加到Java中的队列,所以我有以下代码,for循环队列中的Java
public class foo{
private Queue <ByteBuffer> messageQueue = new LinkedList<ByteBuffer>();
protected boolean queueInit(ByteBuffer bbuf)
{
if(bbuf.capacity() > 10000)
{
int limit = bbuf.limit();
bbuf.position(0);
for(int i = 0;i<limit;i=i+10000)
{
int kb = 1024;
for(int j = 0;j<kb;j++)
{
ByteBuffer temp = ByteBuffer.allocate(kb);
temp.array()[j] = bbuf.get(j);
System.out.println(temp.get(j));
addQueue(temp);
}
}
}
System.out.println(messageQueue.peek().get(1));
return true;
}
private void addQueue(ByteBuffer bbuf)
{
messageQueue.add(bbuf);
}
}
内部工作似乎正常工作为temp
值设置到正确的值,然后通过调用addQueue
方法将其添加到队列中。然而,只有bytebuffer
的第一个字母才会被添加到queue
,而没有其他的。因为当我在head
的队列中的第一个值时,我得到的号码是116
,但是当我尝试获得其他值时,它们是0
,这是不正确的。为什么会发生这种情况,除了bytbuffer的第一个值之外没有其他值被添加到队列头部?
你的内循环产生的ByteBuffers 1024,其中每个只有一个字节从'bbuf'复制。那是你要的吗?或者你打算创建一个包含原始'bbuf'的1024字节“切片”的系列缓冲区? – VGR 2014-11-26 16:39:30
@VGR我想要一系列1024字节的原始片 – jgr208 2014-11-29 00:39:06