.
原文:《Java NIO Buffer》
Buffer 与 Channel 结合使用:从 Channel 读取数据到 Buffer,或 将 Buffer 中的 Channel 写入到 Buffer。
Buffer 内部就是一个内存块。NIO 将该内存块包装成一个 Buffer 对象,以方便对该内存块的操作。
Buffer 基本使用方法
将数据写入 Buffer
调用 buffer.flip() 方法
将 buffer 转换为读模式,内部游标指向头部,以便开始读取数据
从 Buffer 读取数据
调用 buffer.clear() 或 buffer.compact() 方法
clear() 会清除 buffer中的所有数据;
compact() 只清除 buffer 中已被读取过的数据,未被读取过的数据将被移到头部
示例:《Channel》
Buffer 关键字段
Buffer 内部这就是一个数组(连续的内存块)。Buffer 有3个关键字段来辅助操作该内部数组。
capacity
buffer 的容量,表示buffer最多能存放多少数据
position
buffer 当前操作的位置。取值范围:[0, capacity-1]
写模式下,position 表示数据将被写入其指向的单元格,写完后 position 增加1;
读模式下,position 表示数据将读取自其指向的单元格,读完后 position 增加1。
limit
buffer 中能操作的最大数据量。
写模式下,limit 表示最多能写入 buffer 的数据量,其值与 capacity 相等;
读模式下,limit 表示最多能从 buffer 中读取的数据量
例