Buffer 家族
Buffer 实质上是治理着根本元数对象的数组
Buffer 根本属性
/** Invariants: mark <= position <= limit <= capacity */
// 用来长期标记 position 的地位,便于还原
private int mark = -1;
// 行将读取或写入的开始地位
private int position = 0;
// 上界,缓冲区现有元素的数量
private int limit;
// 缓存区的最大容量,初始化时设定,不能扭转
private int capacity;
Buffer 根本 API
package java.nio;
public abstract class Buffer {
// 获取缓冲区容量
public final int capacity()
// 获取以后地位
public final int position()
// 设置一个新的 position
public final Buffer position(int newPosition)
// 获取上界地位
public final int limit()
// 设置一个新的上界地位,然而不能小于 0 或超过 capacity
public final Buffer limit(int newLimit)
// 标记以后 position
public final Buffer mark()
// 复原标记的 position
public final Buffer reset()
// 从新设置 mark=-1 position=0 limit=capacity,读取完数据调用,数据没有被清理,写入的数据会笼罩之前的数据
public final Buffer clear()
// 翻转缓冲区,使写入的数据进入可读状态
public final Buffer flip()
// 重置读写地位,将 position 设为 0,mark 设为 - 1 抛弃
public final Buffer rewind()
// 获取以后地位好缓冲区上界 Limit 还有多少元素
public final int remaining()
// 判断 position 是否曾经达到 limit 上界,用于判断是否曾经全副读取结束
public final boolean hasRemaining()
// 判断以后缓冲区是否是只读的
public abstract boolean isReadOnly();}
填充 Hello 后的缓冲区
ByteBuffer buffer=ByteBuffer.allocate(10);
buffer.put((byte)'H').put((byte)'e').put((byte)'l').put((byte)'l').put((byte)'o');
调用 flip 翻转后的缓冲区
buffer.flip();