我想知道FileWriter是否缓冲。
在这个SO问题中,它似乎是,然而在这个SO问题中,它似乎不是。(这将是每次写入(...)被调用时的系统调用。
所以基本上读这两个问题
提前感谢。
编辑:通过阅读此API解决了问题,我引用了相关部分:
每次调用write()方法都会导致对给定字符调用编码转换器。在写入底层输出流之前,生成的字节在缓冲区中累积。可以指定此缓冲区的大小,但默认情况下,它对于大多数用途来说都足够大。请注意,传递给write()方法的字符不会被缓冲。
为了获得最高效率,请考虑将OutputStreamWriter包装在BufferedWriter中,以避免频繁调用转换器。例如:
Writer out=new BufferedWriter(new OutputStreamWriter(System.out));
由于FileWriter扩展了OutputStreamWriter,它也适用于它。
不过,谢谢你的时间,我知道我问了一些非常具体的问题。
FileWriter
未缓冲,您必须使用BufferedWriter
作为包装:
final int myBufferSize = 2048;
Writer myWriter = new BufferedWriter(new FileWriter, myBufferSize);
我建议总是使用缓冲写入程序。它允许您控制实际的缓冲区大小,并且您可以保证,无论使用何种JVM,IO都将被缓冲,这将极大地提高IO性能。