ByteBuffer是怎么构成的,如何使用?

ByteBuffer通常用于Java原生NIO操作中,对Channel进行读取或者写入,其中封装了一些操作byte数组的方法,还是很实用的。

ByteBuffer的几个基本属性:

  • position:表示进行下一个读写操作的下标位置

  • limit:表示进行读写操作时的结束位置;

  • capacity:表示存储的容量

  • mark: 对数据进行标记

初始化:对ByteBuffer进行初始化,可以使用静态方法wrap(byte[] data)封装数组,也可以通过另一个静态方法allocate(int size)初始化指定长度的ByteBuffer。

初始状态position:0,limit:值为最大长度,capacity:值为最大长度

bytebuffer-init.png

数据写入(或读取):每写入(或读取)一个值,position加一(图中是写入两个数据之后的位置)。

bytebuffer-write.png

准备读取(或写入):使用flip()方法翻转准备数据读取(或写入),进行读取(或写入)时,不能超过limit限制,读超出限制报错BufferUnderflowException(写超出限制报错BufferOverflowException

bytebuffer-flip.png

清除数据:回到初始状态可以调用clear()方法,但是数据并不会删除,当写入时会直接覆盖对应位置的值。

bytebuffer-clear.png

标记位置:当需要进行标记时,可以使用mark()方法,即mark=position;进行读取后,可调用reset()方法直接回到mark标记的位置,即position=mark

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容