BufferedReader
和BufferedInputStream
有自己的读取缓冲区。有缓冲区是他们一次可以读取一行的原因吗?
Scanner
也可以一次读取一行。但这不一定适用于BufferedReader
和BufferedInputStream
。它是否有自己的缓冲区来一次读取一行?
谢谢。
答案 0 :(得分:1)
尤其是从Oracle's docs的这一行开始:
扫描仪可以从实现Readable接口的任何对象中读取文本。如果对底层可读对象的Readable.read(java.nio.CharBuffer)方法的调用引发IOException,则扫描程序将假定已到达输入的结尾。可以通过ioException()方法来检索底层可读对象抛出的最新IOException。
看来Scanner
没有自己的缓冲区。它使用来自基础对象(实现Readable
)的缓冲区,并使用正则表达式进行解析。