【问题标题】:Java - How to use PrintStream/OutputStream to print to the Command LineJava - 如何使用 PrintStream/OutputStream 打印到命令行
【发布时间】:2018-08-01 05:37:08
【问题描述】:

我知道我们可以使用 PrintStream 将行打印到给定文件:

    PrintStream output;
    output = new PrintStream("./temp.txt");
    output .println("some output text"); 

但是,我们可以使用 PrintStream 将行打印到命令行吗?

我查看了 Java 文档,似乎 PrintStream 构造函数可以采用文件路径或 OutputStream(是否有可以打印到命令行的 OutputStream 子类?)

【问题讨论】:

  • 旁注:根据定义System.out(标准输出/标准输出流)已经是PrintStream

标签: java outputstream printstream


【解决方案1】:
output = new PrintStream(System.out);

实际上,

output = System.out;

同样,System.err 也可以这样做 ... 那么我们为什么不直接使用 System.out 和 System.err 呢? sout + tab 在 IntelliJ 中输入相当快

【讨论】:

    【解决方案2】:

    System.outSystem.error 已经是 PrintStream,我们可以使用它们将输出打印到命令行,而无需创建新的 PrintStream 对象。

    使用此 printStream 的优点是您可以使用 System.setOut()System.setErr() 来设置您选择的 printSteam

    PrintStream output = new PrintStream("./temp.txt");
    System.setOut(output); 
    

    上面将覆盖打印到命令行的默认打印流,现在调用System.out.println() 将打印给定文件(temp.txt)中的所有内容

    【讨论】:

    • 请注意,使用System.setOut()System.setErr()会替换整个过程的标准输出或标准错误流。对于一个小型的、最小的控制台应用程序,这可能没问题。对于较大的系统、复杂的单元/集成测试等,这可能会产生严重的后果(例如,如果系统的不同部分同时修改来自多个线程的这些流)。
    【解决方案3】:

    PrintStream 类提供了将数据写入另一个流的方法。要打印到命令行,您可以使用 System.out,因为 out 是 PrintStream 类的对象。

    import java.io.*;  
    class PrintStreamTest{  
      public static void main(String args[])throws Exception{  
        PrintStream pout=new PrintStream(System.out);  
        pout.println(1900);  
        pout.println("Hello Java");  
        pout.println("Welcome to Java");  
        pout.close();  
      }  
    } 
    

    这将在命令行上给出如下输出:

    1900

    你好Java

    欢迎使用 Java

    【讨论】:

      猜你喜欢
      • 2017-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多