使用 System.out 和 PrintWriter 写入控制台

2022-09-01 05:20:11

在阅读有关Java I / O的信息时,我意识到有两种方法可以写入标准输出。

以下是使用这两种技术的代码段

import java.io.*;
public class ConsoleIO {

    public static void main(String[] args) {
        System.out.println("Method 1");

        PrintWriter writer = new PrintWriter(System.out);
        writer.println("Method 2");
        writer.flush();
        writer.close();
    }
}

使用一个比使用另一个有什么性能优势吗?


答案 1

快速谷歌在Coderanch上发现了一个有用的线程。

还有其他几种执行控制台写入的方法,但是除了编写更少的代码之外,使用其中一种或另一种似乎没有真正的好处,并且创建新的PrintWriter对象将占用更多内存(最终)。

PrintWriter可以写入控制台以外的其他源,例如,它可以写入HttpResponse,而System.out.println只能写入控制台。


答案 2

两种方法的不同之处在于:

  • 当您使用时,您实际使用了一个实例。System.out.print("")PrintStream
  • 实际上,区别在于两类,它们是:PrintStreamPrintWriter

    1. PrintStream是字节流,而字符流。PrintWrite
    2. PrintStream使用平台的默认编码,而您可以使用,但是可以使用特定编码传递 OutputStreamWriter。对于示例:PrintWriterPrintStream stream = new PrintStream(output); PrintWriter writer = new PrintWriter(new OutputStreamWriter(output, "UTF-8"));

您可以根据自己的要求选择一种方法。


推荐