首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ByteBuffer类的rewind()和clear()有什么区别?

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

Stack Overflow用户
提问于 2014-08-09 22:50:33
回答 2查看 3.9K关注 0票数 4

注意,用JDK文档的话说,rewind()clear()在“清理”ByteBuffer方面看起来很相似。实际上旧数据是存在的,而且在通道写或get操作之前应该使用rewind()clear()对应于通道读或put操作。

我对给定的描述感到困惑。这两个对等体到底有什么区别?

EN

回答 2

Stack Overflow用户

发布于 2014-08-09 22:59:32

不同的是,clear重置了容量的限制,因此为要写入(和由您读取)的其他数据准备了缓冲区,而rewind不会对该限制执行任何操作,因此您的数据可能会被再次读取。

票数 5
EN

Stack Overflow用户

发布于 2016-06-23 23:18:46

1)这里是clear()方法:

代码语言:javascript
复制
public final Buffer clear() {
    position = 0;
    limit = capacity;
    mark = -1;
    return this;
}

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

2)下面是rewind()方法:

代码语言:javascript
复制
 public final Buffer rewind() {
    position = 0;
    mark = -1;
    return this;
}

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25219770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档