类ByteBuffer的rewind()和clear()有什么区别?

时间:2014-08-09 14:50:33

标签: java bytebuffer

请注意,在JDK文档中,单词rewind()clear()看起来很相似" clean" ByteBuffer。实际上存在旧数据,在频道写入或获取操作之前应使用rewind()clear()对应于频道读取或放置操作。

我对给定的描述感到困惑。这些对手在地球上有什么区别?

2 个答案:

答案 0 :(得分:2)

区别在于clear重置容量限制,因此准备缓冲区以便写入(并由您读取)其他数据,而rewind不会对限制执行任何操作因此,您的数据可能会再次被读取。

答案 1 :(得分:2)

1)这是clear()方法:

public final Buffer clear() {
    position = 0;
    limit = capacity;
    mark = -1;
    return this;
}

clear()方法重置缓冲区 到一个空的状态。它不会更改缓冲区的任何数据元素,只需设置 限制容量和位置回到0

2)这是rewind()方法:

 public final Buffer rewind() {
    position = 0;
    mark = -1;
    return this;
}

您可以使用rewind()返回并重新读取已经存在的缓冲区中的数据 被翻了。如您所见:它不会改变限制。有时,在从缓冲区读取数据后,您可能希望再次读取它,rewind()是您的正确选择。