ByteBuffer byteBuffer = ByteBuffer.allocate(20);FileChannel channel = new FileInputStream(PATH).getChannel();channel.read(byteBuffer);byteBuffer.clear();CharBuffer buffer = Charset.defaultCharset().decode(byteBuffer);通过上述代码得到的CharBuffer的容量是21,比byteBuffer要大,查看decode方法的源码:看不懂,其中有一句代码是2n * 1,想请教一下高手,什么情况下会有这样自动扩容?
1 回答
神不在的星期二
TA贡献1963条经验 获得超6个赞
根据编码器回馈结果cr如果出现结果溢出overflow时
(初次以编码字节平均占字符数(averageCharsPerByte)计算出的空间不够时),
新空间翻倍加1,为防止过程中n=0,翻倍2*n还是0,所以加1
添加回答
举报
0/150
提交
取消