Java常用API 之 java.io.BufferedReader(附解析和示例)_11
2
public class BufferedReader extends Reader
java.io.BufferedReader类继承自java.io.Reader类。
BufferedReader从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。可以指定缓冲区的大小,或者使用默认的大小,大多数情况下,默认值就足够大了。
通常,Reader 所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求。因此,建议用 BufferedReader 包装所有其 read( ) 操作可能开销很高的 Reader(如 FileReader 和 InputStreamReader)。例如,BufferedReader in
= new BufferedReader(new FileReader("foo.in"));
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
如果没有缓冲,则每次调用 read( ) 或 readLine() 都会导致从文件中读取字节,并将其转换为字符后返回,而这是极其低效的。通过用合适的 BufferedReader 替代每个 DataInputStream,可以对将 DataInputStream 用于文字输入的程序进行本地化。
mark就像书签一样,在这个BufferedReader对应的buffer里作个标记,以后再调用reset时就可以再回到这个mark过的地方。mark方法有个参数,通过这个整型参数,你告诉系统,希望在读出这么多个字符之前,这个mark保持有效。读过这么多字符之后,系统可以使mark不再有效,而你不能觉得奇怪或怪罪它。这跟buffer有关,如果你需要很长的距离,那么系统就必须分配很大的buffer来保持你的mark。
调用mark(int readlimit)方法后读取多少字节标记才失效,是取readlimit和BufferedReader类的缓冲区大小两者中的最大值,而并非完全由readlimit确定。
