ByteBuffer常见方法解释

本文详细介绍了JavaNIO中的ByteBuffer类的几个关键方法,如filp()用于切换读写模式,hasRemaining()检测剩余数据,get()读取数据,clear()重置写模式,compact()压缩未读部分,以及rewind()重置position。着重讲解了position和limit两个指针在不同操作下的变化。
摘要由CSDN通过智能技术生成
buffer.filp() //切换到读模式

buffer.hasRemaining() //是否还有剩余数据

buffer.get() //读取数据

buffer.clear()//切换到写模式 

buffer.compact() //切换到读模式
    
buffer.rewind()  //将 position 设置为 0,为重新读取数据做准备,不影响 limit,不会修改数据

三个指针:

  • capacity

  • position

  • limit

一开始:

写模式下,position是写入的位置,limit是容量:

filp动作发生后,position切换为初始读位置,limit切换为读取限制:

读取完后:

然后clear后:

compact方法

把未读完的部分向前压缩,然后切换至写模式

rewind:

1.初始时 position 和 limit 都指向缓冲区的起始位置:
ByteBuffer: [ ][ ][ ][ ][ ][ ][ ][ ]
            ↑
       position = 0, limit = 8

2.向缓冲区中写入了 5 个字节的数据,position 会向前移动到写入数据后的位置

ByteBuffer: [H][e][l][l][o][ ][ ][ ]
                        ↑
             position = 5, limit = 8
       
3.使用 rewind() 方法,position 会被重置回到缓冲区的起始位置

ByteBuffer: [H][e][l][l][o][ ][ ][ ]
            ↑
       position = 0, limit = 8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值