本帖最后由 张晨 于 2012-5-12 10:02 编辑
这是一个小BUG,本意是为了效率多读一个char。也就是说只要有可能read()就读两个字符(就是上面代码中read(cb, 0, 2)),一个输出一个放缓存,如果第二次调用read()方法,他会直接调用缓存缓存,而不会调用更加底层的implRead(cbuf, off, off + len),而后把缓存置为空。 所以也就不会检测此流是否已经被关闭了!
楼主代码在第二次read()的时候,close(),然后在read()是会抛出异常的。{:soso_e100:} |