Buffer

NIO中的Buffer是一个封装过的数据容器,提供灵活的数据操作API。主要有ByteBuffer等8种核心实现,覆盖所有基本数据类型。数据读写过程包括写入Buffer、调用flip()切换到读模式、读取数据以及使用clear()或compact()清理Buffer。clear()清空全部数据,compact()仅移除已读数据。
摘要由CSDN通过智能技术生成

1.Buffer是什么?

NIO中所使用的缓冲区不是一个简单的byte 数组, 而是封装过的Buffer 类, 通过它提供的API , 我们可以灵活的操纵数据。


与Java 基本类型相对应, NIO 提供了多种Buffer 类型, 如ByteBuffer 、CharBuffer 、IntBuffer 等, 区别就是读写缓冲区时的单位长度不一样( 以对应类型的变量为单位进行读写) 。

2.核心buffer实现有哪些?

核心的buffer 实现有这些: ByteBuffer 、CharBuffer 、DoubIeBuffer 、FIoatBuffer 、IntBuffer 、
LongBuffer 、ShortBuffer, 涵盖了所有的基本数据类型( 4 类8 种, 除了Boolean ) 。也有其他的buffer 如MappedByteBuffer 。

3.buffer读写数据基本操作

1 ) 、将数据写Abuffer
2 ) 、调用buffer.flip()
3 ) 、将数据从buffer 中读取出来
4 ) 、调用buffer.clear() 或者buffer.compact()
在写buffer 的时候, buffer 会跟踪写入了多少数据, 需要读buffer 的时候, 需要调用伍p() 来将buffer 从写模式切换成读模式, 读模式中只能读取写入的数据, 而非整个buffero
        当数据都读完了, 你需要清空buffer 以供下次使用, 可以有2 种方法来操作: 调用clear() 或者调用compact() 。
区别: clear 方法清空整个buffer , compact 方法只清除你已经读取的数据, 未读取的数据会被移到buffer 的开头, 此时写入数据会从当前数据的末尾开始。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值