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