FileWriter
的api以以下单词开头:
“使用默认的缓冲区大小将文本写入字符文件。”
BufferedWriter
的api以以下单词开头:
“将文本写入字符输出流,缓冲字符[...]”
因此,显然两个类都使用缓冲区。不幸的是,该api并未解释这两种缓冲区之间的区别。
所以,我问自己:有什么区别?
答案 0 :(得分:0)
当您进行多次写入时,BufferedWriter效率更高。它节省了小写操作,并节省了一大笔写操作。下面是BufferedWriter的write()方法,该方法检查缓冲区是否已满if (nextChar >= nChars)
并刷新缓冲区。
public void write(int c) throws IOException {
synchronized (lock) {
ensureOpen();
if (nextChar >= nChars)
flushBuffer();
cb[nextChar++] = (char) c;
}
}
对于FileWriter而言,每次写入都在进行一个系统调用,这与BufferedWriter不同,后者在缓冲区已满后才进行系统调用。因此,如果您有多个小写操作,则BufferedWriter会更高效。
答案 1 :(得分:0)
BufferedWriter在性能上比react-native run-ios
有更好的缓冲区写入实现
除非需要即时输出,否则建议将BufferedWriter包装在其write()操作可能代价很高的任何Writer周围,例如FileWriters和OutputStreamWriters。例如,
FileWriter
对于缓冲,PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));
扩展了OutputStreamWriter,这也指向同时使用FileWriter
为获得最高效率,请考虑将OutputStreamWriter包装在BufferedWriter中,以避免频繁的转换器调用。