ByteBuffer 使用与理解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Kester_/article/details/71055727

转载请注明出处: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);

展开阅读全文

没有更多推荐了,返回首页