javaNIOByteBuffer - juedaiyuer/researchNote GitHub Wiki
#NIO-ByteBuffer#
正常的应用场景是:往ByteBuffer里写一些数据,然后flip(),然后再读出来
##创建ByteBuffer##
ByteBuffer buffer = ByteBuffer.allocate(n);
##flip##
// 将缓存区准备为数据传出状态
buffer.flip()
// JDK中flip方法代码如下
public final Buffer flip() {
limit = position;
position = 0;
mark = -1;
return this;
}
##清除缓冲区##
// 并没有清空缓冲区中的数据
// 而是重置了对象中的三个索引值
buffer.clear();
// JDK中clear方法代码如下
public final Buffer clear() {
position = 0;
limit = capacity;
mark = -1;
return this;
}
##判断缓冲区是否有可用数据##
ByteBuffer.hasRemaining();
// JDK中的代码
public final boolean hasRemaining() {
return position < limit;
}
##compact()##
// JDK中compact
public ByteBuffer compact() {
System.arraycopy(hb, ix(position()), hb, ix(0), remaining());
position(remaining());
limit(capacity());
return this;
}
// JDK中的remaining()方法
public final int remaining() {
return limit - position;
}
##套接字通道(信道)读写数据##
// 读取数据
int bytesRead = socketChannel.read(buffer);
//写入数据
socketChannel.write(buffer);
##source##