注意,用JDK文档的话说,rewind()和clear()在“清理”ByteBuffer方面看起来很相似。实际上旧数据是存在的,而且在通道写或get操作之前应该使用rewind(),clear()对应于通道读或put操作。
我对给定的描述感到困惑。这两个对等体到底有什么区别?
发布于 2014-08-09 22:59:32
不同的是,clear重置了容量的限制,因此为要写入(和由您读取)的其他数据准备了缓冲区,而rewind不会对该限制执行任何操作,因此您的数据可能会被再次读取。
发布于 2016-06-23 23:18:46
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()对您来说是正确的选择。
https://stackoverflow.com/questions/25219770
复制相似问题