Jdk原生的 ByteBuffer 还是比较难用的。 你可以认为它是读写一体的。但是它读的时候不可以写,写的时候不可以读,因为它记录读写的位置只有一个 变量。 position 记录写或读的 index。 limit 记录可写的最大位置或可读的最大位置。 capacity 创建 ByteBuffer 的总容量。 写的时候: 读的时候: 下面表格显示position limit 在读写整理等变化 这种读写只能存在一种状态,要么读,要么写,如果需要读则需要转为读,写的话得转为写。 ByteBuffer bf = ByteBuffer.allocate(100); // 创建 容量为 100 bf.putInt(1000); // int 是 4字节 bf.putInt(3999); // int 是 4字节 // 此时剩余可写长度 limit – position = 92 bf.put((byte)1); // 此时剩余可写长度 limit – position = 91 bf.flip(); // 转化为读状态后,可读长度就是 limit-position = 9 int val = bf.getInt(); // val = 1000, 此时可读长度 limit-position = 5 bf.compact(); // 此时可写长度 limit – position = 95
ByteBuffer 属性说明
position
从0开始,每次一个字节 position++, position代表可写的位置。
limit
等于 capacity,position可以达到的上限,position等于limit时不可以在写。
capacity
最大的容量。
position
从0开始,每次一个字节 position++, position代表可读的位置。
limit
limit值被赋值为最后一个数据的位置,position等于limit时不可以在读。
capacity
最大的容量。
ByteBuffer用法
1. 创建一个ByteBuffer (使用 数组的方式, jdk内存)
position
0
limit
100
capacity
100
2. putInt 写4字节, 写了两次
position
8
limit
100
capacity
100
3. put 写 1 字节 写了1次
position
9
limit
100
capacity
100
4. flip 转化为读
flip() { limit = position; position = 0; mark = -1; }
position
0
limit
9
capacity
100
5. getInt() 读 4字节
position
4
limit
9
capacity
100
6. compact() 整理并切换为写。移除已读部分。
position
5
limit
100
capacity
100
7 clear() 清理, 可以写。
clear() { position = 0; limit = capacity; mark = -1; }
position
0
limit
100
capacity
100
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算
官方软件产品操作指南 (170)