请注意,在JDK文档中,单词rewind()
和clear()
看起来很相似" clean" ByteBuffer
。实际上存在旧数据,在频道写入或获取操作之前应使用rewind()
,clear()
对应于频道读取或放置操作。
我对给定的描述感到困惑。这些对手在地球上有什么区别?
答案 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()是您的正确选择。