- 创建字节缓冲区
ByteBuffer.allocate(int capacity);
ByteBuffer.allocateDirect(int capacity);
- ByteBuffer位置、限制和容量
position 是读/写位置。对于新缓冲区,始终为0;
limit有两个含义:当写入缓冲区时,指示可以写入的位置;从缓冲区读取时,指示缓冲区包含数据的位置。最初,ByteBuffer处于写入模式,limit=capacity;
capacity以字节为单位指定缓冲区的大小;
- ByteBuffer读写周期
put()方法可以将单个字节、字节数组或其他原始类型(char,double,float,int,long,shourt)写入缓冲区
flip()方法切换到读取模式,从缓冲区读取,有对应的get()方法
buffer.limit(buffer.position());
buffer.position(0);
buffer.flip();
compact()方法切换到写入模式。当切入到写入模式时
- 计算剩余字节数
remaining = limit - position;
- 将剩余的字节移到缓冲区开头;
- 将写入位置设置为左移字节的末尾;
- 设置
limit为缓冲区结尾;
buffer.compact()