java.nio: 往 ByteBuffer 中读写字节

作者在 2011-12-10 23:02:23 发布以下内容
写字节:
    ByteBuffer capacity属性决定了它能容纳多少字节,这个属性不能改变。使用绝对put(int index, byte b)方法,可以改变ByteBuffer中任意位置的字节,下标index取值范围为【0,capacity-1】

     ByteBuffer 中的字节数据也能通过相对put()方法来设置,该方法会用到缓冲区 position limit 属性,即,该方法会改变缓冲区position处的字节,并把position值增加1。相对put(byte b)方法不能设置下标超过limit的字节数据(不管limit有没有小于capacity)。所以下面条件总是成立:  position<=limit<=capcity。下面是一个小例子。

// 创建一个空的容量为10个字节的ByteBuffer对象
ByteBuffer bbuf = ByteBuffer.allocate(10);

// 获得该对象的 capacity 值
int capacity = bbuf.capacity(); // 10

// 使用绝对 put().
// 该方法不会影响到对象的position属性的值
bbuf.put(0,(byte)0xFF); // position=0

// 设置position
bbuf.position(5);

// 使用相对 put(),会影响到position
bbuf.put((byte)0xFF);

// 获得新的position值
int pos = bbuf.position(); // 6

// 获得从position到limit之间的元素数(注意在创建ByteBuffer对象时,limit=capacity,在本例中为10)
int rem = bbuf.remaining(); // 4

// 设置 limit的值
bbuf.limit(7); // remaining=1

// 这个方法可以方便地将 position 置为 0
bbuf.rewind(); // remaining=7
 
读字节:
对应于上面每一个put方法,都有一个相应的get方法,这里不多说了。

NIO | 阅读 1937 次
文章评论,共0条
游客请输入验证码
浏览68492次
最新评论