JDK源码详解之 BufferedReader
类
1. BufferedReader
是什么?
Reads text from a character-input stream, buffering characters so as to provide for the efficient reading of characters, arrays, and lines.
从一个输入字符流中读取文本,为了提供有效的字符读取,数组以及行去缓冲字符。
The buffer size may be specified, or the default size may be used. The default is large enough for most purposes.
缓冲区大小可能被指定,否则使用默认缓冲大小。对于大多数要求来说,默认大小已经足够了。
In general, each read request made of a Reader causes a corresponding read request to be made of the underlying character or byte stream. It is therefore advisable to wrap a BufferedReader around any Reader whose read() operations may be costly, such as FileReaders and InputStreamReaders.
通常来说,每个由Reader
发出的读请求会造成一个相应的读请求到底层字节或者字符流。因此,可取的操作是包装一个BufferedReaders
在任何的Reader上,这个Reader的read()操作代价很大,诸如FileReaders 和InputStreamReaders
2.为什么需要BufferedReader
?
为了提高字符读取的效率。
3. 类详解
3.1 类源码
@see FileReader
@see InputStreamReader
@see java.nio.file.Files#newBufferedReader
@author Mark Reinhold
@since JDK1.1
*/
public class BufferedReader extends Reader {...}
3.2 简单示例
BufferedReader in = new BufferedReader(new FileReader("foo.in"));
will buffer the input from the specified file. Without buffering, each invocation of read() or readLine() could cause bytes to be read from the file, converted into characters, and then returned, which can be very inefficient.
上面这个代码将会缓冲来自指定文件的输入。 如果没有缓冲,每次调用read()
或者readLine()
方法都可能导致从文件读取字节,将字节转换成字符,并且返回,这个过程是非常低效的。
Programs that use DataInputStreams for textual input can be localized by replacing each DataInputStream with an appropriate BufferedReader.
使用DataInputStream
进行文本输入能够本地化,通过使用BufferedReader
取代每个DataInputStream
。