Java NIO
4. Java NIO 核心组件:Selector 选择器,Pipe 管道
Buffer 缓冲器
Java NIO 的 Buffer 由
数据和索引(用于高效访问和操纵数据)组成,这些索引包括4个:
- mark(标记索引)
- position(位置索引)
- limit(限制索引)
- capacity(容量索引);
这 4 个索引的数值关系
:0 <= mark <= position <= limit <= capacity,
默认的初始化值:0 = position ,limit = capacity
唯一与通道 Channel 进行交互的 Buffer 是
ByteBuffer,其他 Buffer 类似都会转化为 ByteBuffer 之后再与 Channel 进行交互,这些缓冲器类型包括以下:
CharBuffer、DoubleBuffer、IntBuffer、LongBuffer、ShortBuffer、FloatBuffer;
Buffer 常用的 API
ByteBuffer 常用的 API
缓存区的创建,写入,读取(以 ByteBuffer 示例)
//直接通过包装字节数组创建 ByteBuffer
ByteBuffer byteBuffer1 = ByteBuffer.wrap(new byte[]{
21,23,5,98,123,34,22});
ByteBuffer byteBuffer2 = ByteBuffer.wrap("are you ok".getBytes("UTF-8"));
//创建一个指定容量的空白 ByteBuffer
ByteBuffer byteBuffer = ByteBuffer.allocate(1024);
//向 ByteBuffer 写入数据
byteBuffer.put((byte)12);
byteBuffer.putChar('a');
byteBuffer.putDouble(23.33);
byteBuffer.putLong(23333333333333L);
byteBuffer.put("are you ok?".getBytes("UTF-8"));
//从 ByteBuffer 读取数据