我知道 FileReader
和 FileWriter
一个一个地读写字符。所以,我应该每次都进行系统调用。
但我的问题是,是否在内部使用缓冲区来优化 IO 性能?
否则,像这里一样读取一个字符数组,
public int read(char[] cbuf, int offset, int length)
需要对每个正在读取的字符进行系统调用。
或者像这里这样写一部分字符串,
public void write(String str, int off,int len)
会很重不是吗?
最佳答案
FileReader
和 FileWriter
派生自 InputStreamReader
和 OutputStreamWriter
。这些的实现确实在内部使用缓冲区来提高字节和字符之间的转换效率,例如 OpenJDK 使用 8kB 缓冲区(参见 StreamDecoder 和 StreamEncoder 类)。 API 规范不提供任何保证,但建议您使用 BufferedReader
和 BufferedWriter
来提高 IO 性能。
关于java - FileReader 和 FileWriter 是否使用内部缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32165249/