如果在下一段代码中我将(new FileWriter
替换为(new PrintWriter
pw = new PrintWriter(new BufferedWriter(new FileWriter ("xanaduindeed.txt")));
pw = new PrintWriter(new BufferedWriter(new PrintWriter ("xanaduindeed.txt")));
它们都工作正常,但我想知道两者中的哪一个优化了内存使用量。 (如果两者中的任何一个实际上更好) 提前谢谢。
答案 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,并将文本写入字符输出流,缓冲字符,以便有效地写入单个字符,数组和字符串。你不需要尝试进一步优化它。