上面是错误的情况,下面是正确的情况:
求大神能不能详细的讲解一下mark的位置。
咨询一个java问题:关于 读取缓冲类BufferedReader中br.mark()方法的用法:
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- 枫少文 2016-08-10 10:42关注
mark在JAVA中的实现是和缓冲区相关的
mark就像书签一样,在这个BufferedReader对应的buffer里作个标记,以后再调用reset时就可以再回到这个mark过的地方。mark方法有个参数,通过这个整型参数,你告诉系统,希望在读出这么多个字符之前,这个mark保持有效。读过这么多字符之后,系统可以使mark不再有效,而你不能觉得奇怪或怪罪它。这跟buffer有关,如果你需要很长的距离,那么系统就必须分配很大的buffer来保持你的mark。
//做了某些处理,发现需要再读一次
br.reset(); 方法重置mark后读取多少字节才失效,并不完全由readlimit参数确定,也和BufferedInputStream类的缓冲区大小有关。 如果BufferedInputStream类的缓冲区大小大于readlimit,在mark以后只有读取超过缓冲区大小的数据,mark标记才会失效
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报