0

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

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

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

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

4

3 回答 3

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 性能。

于 2013-04-25T13:08:12.013 回答
1

我担心的主要事情是两种情况下的异常处理不同。在这里查看这个较旧的答案

不过,无论哪种情况,都要小心编码!您正在使用系统的默认设置,因此您在计算机上编写的内容可能会在另一台计算机上被误读

于 2013-04-25T13:08:01.243 回答
0

最好的解决方案是

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

它在内部使用 BufferedWriter 并将文本写入字符输出流,缓冲字符以提供单个字符、数组和字符串的高效写入。您无需尝试进一步优化它。

于 2013-04-25T13:48:50.090 回答