如果我的缓冲阅读器正在读取大于2 Mb的行,它会缓冲该行还是会增加缓冲区大小



我知道默认缓冲区大小是2 Mb,这就是我正在使用的。

都不是。缓冲区的大小不会改变流的外部行为(除了间接地改变从底层流读取数据的频率)。如果您尝试read多于缓冲区中的数据,它将耗尽缓冲区,然后直接从底层流读取其余数据。如果readLine和换行符不包含在缓冲区中,它将做同样的事情,将数据复制到输出中,直到它找到换行符,但对流自身缓冲区的大小没有任何影响。

顺便说一下,在我发现的任何实现中,默认缓冲区大小都不是2MB;classpath使用8kB, Oracle似乎使用4kB或8kB。

它使用一个内部的StringBuffer来保持到目前为止的线路组装,它可以根据需要增长。它不会增加读缓冲区

BufferedReader不一定是面向行的。在任何情况下,它将读取2Mb(如果这是缓冲区的大小)。

相关内容

最新更新