ByteBuffer 使用总结
微wx笑 2022-01-26【编程语言】 5 0关键字: java ByteBuffer
ByteBuffer 使用总结:1、初始化ByteBuffer writeBuffer = ByteBuffer.allocate(256);position=0,capacity=limit=2562、put 60byteposition=60,其它不变3、get 10byteposition=
ByteBuffer 使用总结:
1、初始化
ByteBuffer writeBuffer = ByteBuffer.allocate(256);
position=0,capacity=limit=256
2、put 60byte
position=60,其它不变
3、get 10byte
position=70,其它不变
4、flip
position=0,limit=70,这里是将之前的position的值赋给了limit,也就是认为之前的操作是写入,而不是读取,虽然我们也执行了读取操作。
当连续两次执行 flip,中间不间隔任何操作,就需要执行 clear 了。
Exception in thread "main" java.nio.InvalidMarkException
at java.nio.Buffer.reset(Buffer.java:306)
at com.weixiao.network.GatewayInstanceTest.main(GatewayInstanceTest.java:192)
总结
当 ByteBuffer.remaining() 小于要读取或写入的长度时,再执行读取或写入操作都会产生异常;
读取则产生 java.nio.BufferUnderflowException 异常,
写入则产生 java.nio.BufferOverflowException 异常。
当 ByteBuffer.remaining() 等于 0 时,不能再执行读取或写入操作,需要执行:clear() 操作,否则将产生异常。
本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/lang/2022-01-26/980.html