moonfish0607
2017-11-23 03:22java sun.nio.cs.StreamEncoder 源码阅读的一些小问题
在看StreamEncoder源码吗对其中implWrite方法有点儿小疑问。
void implWrite(char cbuf[], int off, int len)
throws IOException
{
CharBuffer cb = CharBuffer.wrap(cbuf, off, len);
if (haveLeftoverChar)
flushLeftoverChar(cb, false);
while (cb.hasRemaining()) {
CoderResult cr = encoder.encode(cb, bb, false);
if (cr.isUnderflow()) {
assert (cb.remaining() <= 1) : cb.remaining();
if (cb.remaining() == 1) {
haveLeftoverChar = true;
leftoverChar = cb.get();
}
break;
}
if (cr.isOverflow()) {
assert bb.position() > 0;
writeBytes();
continue;
}
cr.throwException();
}
}
在执行完encode方法后,cb中position位置不是应该移到了limit位置吗,此时调用remaining方法不是应该为0吗,为什么源码中会对<=1进行判断,=1是什么情况下呢?
新人没啥金币,希望有大佬能指教,下面附上StreamEncoder的源码链接。
StreamEncoder完整源码
- 点赞
- 回答
- 收藏
- 复制链接分享
1条回答
为你推荐
- 跪求一个解决方法!!!!!
- spring
- java-ee
- tomcat
- eclipse
- 2个回答
- spring boot初学者,这个报错搞得头疼。。。
- spring
- java
- maven
- jar
- 4个回答
- tomcat6配置comet,修改server.xml出错
- it技术
- 互联网问答
- IT行业问题
- 计算机技术
- 编程语言问答
- 0个回答
- Socket编程java.net.BindException: Address already in use: JVM_Bind
- it技术
- 互联网问答
- IT行业问题
- 计算机技术
- 编程语言问答
- 0个回答
- 求助:netty 4.x服务器端出现CLOSE_WAIT的问题
- net
- 服务端
- java
- tcp
- close_wait
- 2个回答
换一换