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

时间:2015-08-23 09:42:22

标签: java file-io

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

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

否则,读取像这里的字符数组

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

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

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

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

会非常沉重吗?

2 个答案:

答案 0 :(得分:4)

FileReaderFileWriter来自InputStreamReaderOutputStreamWriter。这些实现在内部使用缓冲区来使字节和字符之间的转换更有效,例如OpenJDK使用8kB缓冲区(请参阅StreamDecoderStreamEncoder类)。 API规范虽然没有保证,但建议您使用BufferedReaderBufferedWriter来提高IO性能。

答案 1 :(得分:1)

不,但他们分别使用AsetEnabled = "false;",它们都有缓冲区。