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();
发表回复