1、概述:
在NIO中,数据的读写始终是与缓冲区联系的(读取时信道(ScoketChannel)将数据读入到缓冲区中,写入的时候首先将需要发送的数据按照顺序填入到缓冲区)。缓冲区是定长的。基本上它只是一个列表。它的所有元素都是基本数据类型(String并未包含其中,但是String.getBytes就可以了)。
NIO缓冲区的其中形式:ByteBuffer\ShortBuffer\CharBuffer\IntBuffer\FloatBuffer\DoubleBuffer\LongBuffer。ByteBuffer是最常用的缓冲区,它提供了读写其他数据类型的方法,且信道的读写方法只接受ByteBuffer。在ByteBuffer中,有以下3种常见的属性:m:mark,初始值为-1,标记索引地点;p:position,初始值为0,索引下标;l:limit,最好定义成bytebuffer的长度,既允许可读空间长度;c:capacity:缓冲区能容纳的数据元素的最大数量,创建之后无法被改变。
2、用法:
2.1创建ByteBuffer
2.1.1使用allocate()静态方法
创建一个容量为256的ByteBuffer,ByteBuffer bb=ByteBuffer.allocate(256);,参数为ByteBuffer的长度,这个长度必须要在设计的时充分考虑,不然就得重新创建;
2.1.2通过包装一个已有的数组来创建,通过包装的方法创建的缓冲区保留了被包装数组内保存的数据
ByteBuffer bb=ByteBuffer.wrap(byteArray);//wrap(int[] array,i