NIO三大核心:Channel、Buffer、Selector
Buffer类
缓冲区有七大可操作类:
ByteBuffer、LongBuffer、CharBuffer(除了Boolean类型的其他7个基本类型)
Buffer类有两个静态方法来实例化对象:
ByteBuffer.allocate(int i):指定容量
ByteBuffer.wrap(byte[] bs):创建有内容的buffer对象
Buffer类提供的api:
方法 | 作用 |
---|---|
position() | 当前索引位置 |
limit() | 可操作最大位置 |
capacity() | 容量 |
remaining() | 剩余可操作容量 |
position(int i) | 修改索引位置 |
limit(int i) | 修改可操作最大位置 |
hasRemaining() | 是否还有可操作容量 |
如果缓冲区满了,可以利用position(int i)调整索引位置,就可以覆盖之前的内容
方法 | 作用 |
---|---|
flip() | 切换读模式:原理就是把position和limit设置成最小和position当前位置 |
clear() | 切换写模式:原理就是把position和limit设置成最小和最大 |
rewind() | 重新读取 |