bytebuffer
属性
- position:下一次读取或写入的位置。
- limit:指定还有多少数据需要取出(在从缓冲区写入通道时),或者还有多少空间可以放入数据(在从通道读入缓冲区时)。
- capacity:指定了可以存储在缓冲区中的最大数据容量,实际上,它指定了底层数组的大小,或者至少是指定了准许我们使用的底层数组的容量。
- mark:标记位配置mark和reset方法
初始化方法
- allocateDirect:堆外内存
- allocate:堆内内存
几个重要的方法介绍
compact-压缩缓冲区,将未读的数据放在缓冲区头部
将position到limit的数据复制到0到limit-postion中,同时position等于limit-postion,limit等于capacity。一般用于继续写。
例如:postion=1,limit=10,capacity=10,经过compact后,position=9,limit=10,capacity=10
clear
position为0,limit=capacity,一般在写之前调用,buffer可以从头开始写。
flip
limit变为当前的position,用于读取,一般在读取buffer之前调用,可以返回0-limit之间的数据。
rewind
读写都可以用,只是将position置为0,mark置为-1。表示可以重新读写。
mark和reset
mark:指定一个特定的position一个标记位
reset:在mark指定的标记位开始进行操作
slice
slice() 方法根据现有的缓冲区创建一个子缓冲区,俩者共享数据。
1 | ByteBuffer orgBuffer = ByteBuffer.allocateDirect(1024); |