byteBuffer的理解和使用

@(技术博客)

定义

ByteBuffer类是在Java NIO中常常使用的一个缓冲区类,使用它可以进行高效的IO操作
其中,ByteBuffer主要有
(1)存储的内容
(2)bytebuffer的信息
    mark——标记
    position——位置
    limit——限制
    capacity——容量

    0 <= 标记 <= 位置 <= 限制 <= 容量

操作

(1)对存储内容和bytebuffer的信息同时操作

    1)mbytebuffer=Bytebuffer.allocate(int size);

    注: 除boolean型外,char/int/short/long/float/double等,都提供了get/put方法,用于向ByteBuffer进行读写

        a.参数:
            size :就是capacity(其中capacity不变)
        b.变化:
            数据:木有
            mark:-1
            positon:0
            limit=capacity

    2)mbytebuffer.put(byte[] bytes);

        a.参数:
            从bytes获取数据放到mbytebuffer上    
        b.变化:
            数据:存入bytes数据
            mark:
            position:假设length为bytes的长度,那么position=position+length
            limit:limit=capacity

    3)mbytebuffer.get(byte[] bytes, int offset, int length);

        a.参数:
            将bytes的position位置开始到position+length 的数据  放到  bytes上
            其中,从bytes的第offset位开始放数据
        b.变化:
            数据:不变
            mark:
            position:position=position+length
            limit:limit=capacity

(2)只对bytebuffer的信息进行操作:

    1)mbytebuffer.mark()
        a.变化:
            mark=position

    2)mbytebuffer.flip()
        a.变化:
            mark=-1
            limit=position
            position=0

    3)mbytebuffer.clean()
        a.变化:
            mark=-1
            limit=capacity
            position=0
    4)mbytebuffer.reset()
        a.变化:
            mark不变
            position=mark
            limit不变 
    5)mbytebuffer.rewind()
        a.变化:
            mark=-1
            position=0
            limit不变

(3)其他操作:
    1)mbytebuffer.slice()
        描述:创建新的字节缓冲区,其内容是此缓冲区内容的共享子序列。新缓冲区的内容将从此缓冲区的当前位置开始。此缓冲区内容的更改在新缓冲区中是可见的,反之亦然;这两个缓冲区的位置、界限和标记值是相互独立的。新缓冲区的position将为零,其capacity和limit将为此缓冲区中所剩余的字节数量,其标记是不确定的。

    2)duplicate()
        描述: 创建共享此缓冲区内容的新的字节缓冲区。新缓冲区的内容将为此缓冲区的内容。此缓冲区内容的更改在新缓冲区中是可见的,反之亦然;这两个缓冲区的位置、界限和标记值是相互独立的。新缓冲区的容量、界限、位置和标记值将与此缓冲区相同。

    3)compact()
        描述:将缓冲区的当前位置和界限之间的字节(如果有)复制到缓冲区的开始处。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值