PrintWriter vs FileWriter在以下上下文中

时间:2013-04-25 13:02:48

标签: java filewriter printwriter

如果在下一段代码中我将(new FileWriter替换为(new PrintWriter

pw = new PrintWriter(new BufferedWriter(new FileWriter  ("xanaduindeed.txt")));

pw = new PrintWriter(new BufferedWriter(new PrintWriter ("xanaduindeed.txt")));

它们都工作正常,但我想知道两者中的哪一个优化了内存使用量。 (如果两者中的任何一个实际上更好) 提前谢谢。

3 个答案:

答案 0 :(得分:3)

在Oracle的JVM中:

public PrintWriter(String fileName) throws FileNotFoundException {
    this(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName))),
         false);
}

PrintWriter的显着特征是在每个换行符(LF或CR或CRLF)上刷新输出。最低内存占用量为FileWriter,但缓冲可显着提高I / O性能。

答案 1 :(得分:1)

我担心的主要问题是两种情况下的异常处理都不同。查看旧答案here

在任何一种情况下,都要小心编码!您正在使用系统的默认设置,因此您在计算机上编写的内容可能会在另一个

中被误读

答案 2 :(得分:0)

最佳解决方案是

new PrintWriter ("xanaduindeed.txt")));

它在内部使用BufferedWriter,并将文本写入字符输出流,缓冲字符,以便有效地写入单个字符,数组和字符串。你不需要尝试进一步优化它。