我知道FileReader
和FileWriter
一对一地读写字符。因此,我应该每次都进行系统调用。
但是我的问题是,它是否在内部使用缓冲区来优化IO性能?
否则,读取像这样的字符数组,
public int read(char[] cbuf, int offset, int length)
对于每个要读取的字符,将需要系统调用。
或者像这样写一部分String,
public void write(String str, int off,int len)
会很重吗?
最佳答案
FileReader
和FileWriter
从InputStreamReader
和OutputStreamWriter
派生。这些实现确实在内部使用缓冲区来提高字节和字符之间的转换效率,例如OpenJDK使用8kB缓冲区(请参见StreamDecoder和StreamEncoder类)。 API规范虽然不能为您提供任何保证,但建议您使用BufferedReader
和BufferedWriter
来提高IO性能。