在ByteBuffer的compact()之后将position设置为0

时间:2014-09-13 00:35:56

标签: java nio

通常,在调用紧凑()到ByteBuffer之后,我看到新位置将被设置为旧限制,以便缓冲区为put()做好准备。

但有时,在调用compact()之后,我看到ByteBuffer(和limit = capacity)中的位置为0。如果是这样,只有在调用compact之前position = capacity(或position = limit)时才会发生这种情况吗?

ByteBuffer的javadoc说“缓冲区的位置设置为n + 1,其限制设置为容量。”但我似乎在程序中将位置设置为0。

1 个答案:

答案 0 :(得分:1)

如果您已从缓冲区删除了所有内容,则会发生这种情况,因此它与clear().相同,这意味着预先position = limit