#
点击图片报名上海、南京源创会
#
网上关于bytebuffer的文章真的很多,为何在此还要写一篇呢?主要是基于以下几点考虑:
-
很多人在使用
t-io
时,还不会bytebuffer,只会照着
t-io
提供的例子照猫画虎,不利于灵活运用
-
网上搜到的一些相关文章,讲得不是太易懂,不利于初学者灵活运用bytebuffer
-
本文旨在讲解灵活运用bytebuffer所需的最小知识,以帮助用户快速掌握bytebuffer
我们可以把bytebuffer理解成如下几个成员组成的一个新对象,对,就是一个普通的java对象,像string一样的java对象。(强调一下,这里只是说这样理解,实际上有些bytebuffer的实现类并非这样实现,并且这里只列出掌握bytebuffer所需要的最小知识集合,其它诸如mark等字段本文并不介绍,以免增加初学者的惑度)
-
byte[] bytes: 用来存储数据
-
int capacity: 用来表示bytes的容量,那么可以想像capacity就等于bytes.size(),此值在初始化bytes后,是不可变的。
-
int limit: 用来表示bytes实际装了多少数据,可以容易想像得到limit
-
int position: 用来表示在哪个位置开始往bytes写数据或是读数据,此值是可灵活变动的
通过下图,对bytebuffer形成一个感观认识吧
1、创建bytebuffer: ByteBuffer.allocate(6)
2、写入一个字节: byteBuffer.put((byte)3)
3、读取一个字节: byte bs = byteBuffer.get()
对于刚刚写好的bytebuffer,我们要读取它的内容,需要先设置一下position和limit,否则读的位置就不对。
我们看一下,设置position和limit后,bytebuffer的内部变化
接下来,我们就可以读取刚才写入的数据了