输出结果:
112
97
c k a g e c o m . y
c k a g e c o m . y
为什么我的b.mark(100);没起作用???
就算改成其他数值也是一样的输出,根本没有定位到第100个字符并从100个字符开始输出呀?根本就是从第一个字符开始的,为什么???作者: 武庆东 时间: 2012-9-6 08:04
查看API文档:
void java.io.BufferedInputStream.mark(int readlimit)
See the general contract of the mark method of InputStream.
Overrides: mark(...) in FilterInputStream
Parameters:
readlimit the maximum limit of bytes that can be read before the mark position becomes invalid.
标记当前位置,在mark以后最多可以读取readlimit字节数据,如果mark后读取超过readlimit字节数据,marik就会失效
参考他人解释:BufferedInputStream类调用mark(int readlimit)方法后读取多少字节标记才失效,是由readlimit和BufferedInputStream类的缓冲区大小两者中的最大值决定,而并非完全由readlimit确定作者: 庄星睿 时间: 2012-9-6 08:54
mark(int readlimit) 方法的作用是标记当前指针位置,readlimit - 在标记位置失效前可以读取字节的最大限制。
当你读取两个字节之后,这个时候指针应该指向第三个字节,所以还是从应该是从第三个字节开始读取10个字节,然后调用reset()之后,指针又回到刚才标记的位置,还是从第三个字节开始读取10个字节。