java - FileReader 和 FileWriter 是否使用内部缓冲区?

标签 java file-io

我知道 FileReaderFileWriter 一个一个地读写字符。所以,我应该每次都进行系统调用。

但我的问题是,是否在内部使用缓冲区来优化 IO 性能?

否则,像这里一样读取一个字符数组,

public int read(char[] cbuf, int offset, int length)

需要对每个正在读取的字符进行系统调用。

或者像这里这样写一部分字符串,

public void write(String str, int off,int len)

会很重不是吗?

最佳答案

FileReaderFileWriter 派生自 InputStreamReaderOutputStreamWriter。这些的实现确实在内部使用缓冲区来提高字节和字符之间的转换效率,例如 OpenJDK 使用 8kB 缓冲区(参见 StreamDecoderStreamEncoder 类)。 API 规范不提供任何保证,但建议您使用 BufferedReaderBufferedWriter 来提高 IO 性能。

关于java - FileReader 和 FileWriter 是否使用内部缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32165249/

相关文章:

java - 用 Java 实现一个迷你摘要器

c++ - 如何覆盖当前文件?

java - VSCode 中没有安装 'java' 文件的格式化程序

java - Sonar 代码覆盖率不会反射(reflect)在没有类文件的服务器上

java - Spring MVC ajax 重新渲染用户界面重复

file-io - 打开文件时在 Komodo Edit 中自动切换自动换行

python - 无法写入文件但未生成错误

java - 用 Java 将多个图像上传到面板上

java - 实例 void 方法的模拟无需调用 'expectLastCall' 方法即可工作

java - JDK 1.7 : "Too many open files" due to POSIX Semaphores?