FileWriter vs BufferedWriter

Rol*_*all 8 java io buffer

我想知道FileWriter是否被缓冲.

这个 SO问题中,似乎它是,但是在这个 SO问题中似乎不是.(每次写(...)被调用时它将是一个系统调用.

所以基本上阅读那两个Q&A我有点困惑.有人能够清楚地解释出来吗?

提前致谢.

编辑:问题通过阅读来解决这个 API由本人引用的相关部分:

每次调用write()方法都会导致在给定字符上调用编码转换器.生成的字节在写入底层输出流之前累积在缓冲区中.可以指定此缓冲区的大小,但默认情况下,它足够大,可用于大多数用途.请注意,传递给write()方法的字符不会被缓冲.

为了获得最高效率,请考虑在BufferedWriter中包装OutputStreamWriter,以避免频繁的转换器调用.例如:

Writer out = new BufferedWriter(new OutputStreamWriter(System.out));

由于FileWriter扩展了OutputStreamWriter,它也适用于它.

谢谢你的时间,我知道我问了一些非常具体的事情.

mor*_*s05 -1

我建议始终使用 BufferedWriter。它允许你控制实际的缓冲区大小,并且可以保证无论你使用什么JVM,IO都会被缓冲,这带来了巨大的IO性能提升。

  • 不会。OutputStreamWriter 中的 write 方法被重写。缓冲发生在 OutputStreamWriter 使用的 StreamEncoder 中,它将字符编码为字节。 (2认同)