【问题标题】:PrintWriter vs FileWriter in the following context [duplicate]以下上下文中的 PrintWriter vs FileWriter [重复]
【发布时间】:2013-04-25 13:02:47
【问题描述】:

如果在下一段代码中我要用(new PrintWriter 替换(new FileWriter 会怎样

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

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

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

【问题讨论】:

  • pw = new PrintWriter(new BufferedWriter(new PrintWriter("xanaduindeed.txt")));pw = new PrintWriter("xanaduindeed.txt");不一样吗?

标签: java filewriter printwriter


【解决方案1】:

在 Oracle 的 JVM 中:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      最好的解决办法是

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

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

      【讨论】:

        猜你喜欢
        • 2011-08-11
        • 2012-12-13
        • 1970-01-01
        • 1970-01-01
        • 2011-05-27
        • 1970-01-01
        • 1970-01-01
        • 2016-07-23
        相关资源
        最近更新 更多