我知道FileReader
和FileWriter
逐个读写字符。所以,我应该每次都进行系统调用。
但我的问题是,是否在内部使用缓冲区来优化IO性能?
否则,读取像这里的字符数组
public int read(char[] cbuf, int offset, int length)
需要对每个正在读取的字符进行系统调用。
或像这里写一部分字符串,
public void write(String str, int off,int len)
会非常沉重吗?
答案 0 :(得分:4)
FileReader
和FileWriter
来自InputStreamReader
和OutputStreamWriter
。这些实现在内部使用缓冲区来使字节和字符之间的转换更有效,例如OpenJDK使用8kB缓冲区(请参阅StreamDecoder和StreamEncoder类)。 API规范虽然没有保证,但建议您使用BufferedReader
和BufferedWriter
来提高IO性能。
答案 1 :(得分:1)
不,但他们分别使用A
和setEnabled = "false;"
,它们都有缓冲区。