在Java中输出重定向

时间:2014-10-01 23:54:13

标签: java eclipse

如何在java中重定向输出?

我在eclipse中运行程序。我的代码如下:

  public static void main(String[] args) throws Exception{
    /* Redirect output to file */
    File file = new File("fileName");
    FileOutputStream fos = new FileOutputStream(file);
    PrintStream ps = new PrintStream(fos);
    System.setOut(ps);

    OtherClass.main(args);
  }

如果没有我上面写的输出重定向,代码会返回一些黑色的值和一些红色的值(不是错误,而是在OtherClass中调用的参数)。

上面的重定向将在eclipse控制台中以黑色显示的文本写入我的文件中,但read中的输出写在控制台而不是我的文件中。

我该如何做相反的事情并在我的文件中打印红色文本而不是黑色文本?为什么eclipse会为这个输出使用不同的颜色?

3 个答案:

答案 0 :(得分:1)

调用System.setOut()重定向stdout,您需要调用System.setErr()来重定向stderr,例如,

// System.setOut(ps);
System.setErr(ps); // <-- for std err

答案 1 :(得分:1)

Eclipse控制台中的红色输出是将文本打印到标准错误流(System.err)上。为了实现这一点,只有用红色打印的文字被写入文件,您需要将System.setOut(ps);的电话换成System.setErr(ps);

答案 2 :(得分:1)

  

我该如何做相反的事情并在我的档案中打印红色文字而不是黑色文字?

不是将标准输出(System.out)的输出重定向到文件,而是从错误流(System.err)重定向输出。换句话说,而不是

System.setOut(ps);

使用

System.setErr(ps);
//        ^^^
  

为什么eclipse会为这个输出使用不同的颜色?

因此,你可以看到哪个输出来自System.out(黑色),哪个输出来自System.err(红色 - 处理打印例外)。