java - 阅读器与缓冲阅读器

标签 java bufferedreader

假设缓冲区大小为BufferedReadercbuf 相同。

我知道,每次进行 native 调用来读取每个字符时,FileReader 上的简单 read() 调用都会变慢。

FileReader 上的 read(char[] cbuf) 只需一次 native 调用即可读取 cbuf 大小的字符,类似于BufferedReader 的内容。

如果在 FileReaderBufferedReader 上使用 read(char[] cbuf) 方法,性能是否会有任何差异。

最佳答案

A read(char[] cbuf) on the FileReader would read cbuf size of chars with just one native call which is similar to that of the BufferedReader.

这是不正确的。没有读取 Java char[] 数组的 native 调用。 FileReader 实际上是一个分层在 FileInputStream 之上的 InputStreamReader InputStreamReader 运行一个 8k 内部缓冲区。因此文件一次最多可读取 8k。

So would there be any performance difference if read(char[] cbuf) method is being used on FileReader vs BufferedReader.

您会读到一些观点,认为由于双缓冲,BufferedReader 读入缓冲区的速度较慢,但​​它们是不正确的。 BufferedReader 检测到这种情况并在可能的情况下直接进行读取。

简而言之,您不会注意到差异。

关于java - 阅读器与缓冲阅读器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15210578/

相关文章:

java - OpenL 平板电脑规则存在许多条件内存问题

java - 在Java中使用stringbuilder对象创建字符串的时间复杂度

java - 从文本文件读取数据并创建对象

java - 从 BufferedReader (readLine) 读取返回 null?

java - 如何在java中读取文本文件的第一行并打印出来?

使用 Jython 脚本的 Java 代码

java - Android 应用程序和 ActionBar 中的自定义字体

java - 如何在 ConstraintValidator 中执行 @Entity 查询

java - 从 Java 中的 ping 结果中解析出时间部分

Java解析csv并创建对象