moonfish0607 2017-11-23 03:22 采纳率: 0%
浏览 2450

java 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条回答 默认 最新

  • dabocaiqq 2018-05-06 14:11
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 运筹学中在线排序的时间在线排序的在线LPT算法
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧