您的位置:首页 > Web前端

ByteBuffer 使用与理解

2017-05-01 14:22 549 查看

转载请注明出处:http://blog.csdn.net/kester_/article/details/71055727

ByteBuffer 使用与理解

一、ByteBuffer 是缓冲区,可用来减少物理磁盘的读写。

二、ByteBuffer 主要涉及到以下几个成员变量:

1.position

指针移动到的位置。在读或写时指针会跟着移动。

2.mark

标记特定未知。方便后面再次回到该位置。

3.limit

可以读或写的极限。介于0到容量中间。

4.capacity

容量。不变值。

三、ByteBuffer 主要涉及到以下几个方法:

1.get(byte[], int, int)

读取值到指定数组,指针会跟着移动。

2.put(byte[])

将数组写到缓冲区,指针会跟着移动。

3.clear()

重置缓冲区。将 positoin 置0,mark 置-1,limit 置为 capacity。

4.flip()

翻转缓冲区。缓冲区分为写状态或读状态,当写入一定内容后需要通过 get 读出来之前,可进行 flip() 翻转,此时 position 置0,mark 置-1,limit 置为 position (即之前写到的某个位置)。

5.position()

返回position。

6.mark()

标记当前位置,mark 置为 position。

7.remaining()

返回剩下可读或写的距离,limit - position。

8.reset()

回到之前标记的位置,position 置为 mark,需要先调用 mark() 才能调用。

9.array()

直接获取ByteBuffer里的数组,没写满情况下,比实际写的内容数组大。

10.capacity()

返回 capacity。

11.rewind()

缓冲区倒回。position 置0,mark置-1。

四、转换

0.声明变量

byte[] bytes

ByteBuffer buffer

1.byte[] 转 ByteBuffer

buffer = ByteBuffer.wrap(bytes);

// 使用这个方法后改动 buffer 或 bytes 都会联动改动到另一方。

2.ByteBuffer 转 byte[]

bytes = new byte[buffer.remaining()];

buffer.get(bytes, 0, bytes.length);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ByteBuffer