本帖最后由 u011980246 于 2014-12-07 13:56:11 编辑

解决方案 »

  1.   

    按照楼主的意思修改如下:
     for (int i=0; i < len ; i++){   
                    c = read();
                    if (c == -1) {
                        return -1;
                    }
                    b[off + i] = (byte)c;
     }
    首先如果第一次读入的是文件结束符,那么没有问题返回-1,与原来的写法效果相同。
    但是如果第一次读不是结束符,那么在读取了n个字符最终读到结束符时,返回-1.问题来了,这里本该返回n的现在却返回了-1.接下来就不需解释了吧