ByteBuffer是怎么构成的,如何使用?
2021-10-26 本文已影响0人
小北写码
ByteBuffer通常用于Java原生NIO操作中,对Channel进行读取或者写入,其中封装了一些操作byte数组的方法,还是很实用的。
ByteBuffer的几个基本属性:
-
position:表示进行下一个读写操作的下标位置
-
limit:表示进行读写操作时的结束位置;
-
capacity:表示存储的容量
-
mark: 对数据进行标记
初始化:对ByteBuffer进行初始化,可以使用静态方法wrap(byte[] data)
封装数组,也可以通过另一个静态方法allocate(int size)
初始化指定长度的ByteBuffer。
初始状态:position:0,limit:值为最大长度,capacity:值为最大长度
数据写入(或读取):每写入(或读取)一个值,position加一(图中是写入两个数据之后的位置)。
准备读取(或写入):使用flip()
方法翻转准备数据读取(或写入),进行读取(或写入)时,不能超过limit限制,读超出限制报错BufferUnderflowException
(写超出限制报错BufferOverflowException
)
清除数据:回到初始状态可以调用clear()
方法,但是数据并不会删除,当写入时会直接覆盖对应位置的值。
标记位置:当需要进行标记时,可以使用mark()
方法,即mark=position
;进行读取后,可调用reset()
方法直接回到mark标记的位置,即position=mark
。