我想知道 FileWriter 是否被缓冲。
在这个SO 问题中,似乎是这样,但是在这个SO 问题中似乎不是。(这将是每次调用 write(..) 时的系统调用。
所以基本上阅读这两个问答我有点困惑。有人能清楚地解释清楚吗?
提前致谢。
编辑:通过阅读我引用相关部分的 API解决了问题:
每次调用 write() 方法都会导致对给定字符调用编码转换器。结果字节在写入底层输出流之前累积在缓冲区中。可以指定此缓冲区的大小,但默认情况下它对于大多数用途来说足够大。请注意,传递给 write() 方法的字符不会被缓冲。
为了获得最高效率,请考虑将 OutputStreamWriter 包装在 BufferedWriter 中,以避免频繁的转换器调用。例如:
Writer out = new BufferedWriter(new OutputStreamWriter(System.out));
由于 FileWriter 扩展了 OutputStreamWriter,因此它也适用于它。
不过,感谢您的宝贵时间,我知道我问了一些非常具体的问题。