byteBuffer的理解和使用

来源:互联网 发布:windows垃圾清理软件 编辑:程序博客网 时间:2024/06/05 17:31

@(技术博客)

定义

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()        描述:将缓冲区的当前位置和界限之间的字节(如果有)复制到缓冲区的开始处。
原创粉丝点击