首先介绍一下Buffer的使用场景,Buffer是Java NIO中非常重要的一个类,数据在各种Channel的读写时都需要这个类来缓冲。
然而Buffer在读写之前需要做一些准备工作,比如:在读取Buffer里的数据之前要先在Buffer里准备好要读取数据,往Buffer里写数据时,要找出Buffer里的空余空间或者要清空Buffer等等。做以上事情方法有:clear(), flip(), rewind().因为我经常记不住这几个方法的功能,所以在此记录一下, 也供他人查找。
Buffer有几个下标需要注意:position(当前位置), limit(可度/写数据 下标的最大值), capacity(实际空间)
1.clear()
使Buffer为一系列新的通道读取或相对放置 操作做好准备,即为往Buffer中写数据做好准备
public final Buffer clear()
{
this.position = 0;
this.limit = this.capacity;
this.mark = -1;
return this;
}
2. flip()
使Buffer为一系列新的通道写入或相对获取 操作做好准备:它将限制设置为当前位置,然后将位置设置为 0。即为从Buffer中度数据做好准备
public final Buffer flip()
{
this.limit = this.position;
this.position = 0;
this.mark = -1;
return this;
}
3.rewind()
使缓冲区为重新读取已包含的数据做好准备:它使限制保持不变,将位置设置为 0。
public final Buffer rewind()
{
this.position = 0;
this.mark = -1;
return this;
}
Kyle Wang