ByteBuffer 使用与理解

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值