关于BufferedReader中的mark和reset方法

public void mark(int readAheadLimit)
          throws IOException
标记流中的当前位置。对 reset() 的后续调用将尝试将该流重新定位到此点。

覆盖:
Reader 中的 mark
参数:

readAheadLimit - 在仍保留该标记的情况下,对可读取字符数量的限制。在读取达到或超过此限制的字符后,尝试重置流可能会失败。限制值大于输入缓冲区的大小将导致分配一个新缓冲区,其大小不小于该限制值。因此应该小心使用较大的值。  


举个例子:使用BufferedReader去进行文件读取以后进行多次遍历,则该方法中的参数应该设置为被读取文件的长度,因为若实际读取的字节数大于参数,则该该方法所定位的位置失效,当调用reset方法时,文件指针(这里使用指针这个概念便于理解)将无法回到锁定位置


正确使用方式:将参数设置的稍大一些,这样当调用reset方法时,将回到被定位的位置,再次遍历



阅读更多

没有更多推荐了,返回首页