将输出流改回 system.out

Changing output stream back to system.out

我的 main 调用了几个 classes,每个都重定向 System.out 这样它们就可以拦截另一个 class 打印 的内容(即使这是不好的做法——我必须这样做)。 然后,在他们都完成后,我想简单地用我的 main 在屏幕上打印,但是没有任何反应。

class1、class2 中的代码:

doStuff() {
   ByteArrayOutputStream outContent = new ByteArrayOutputStream();
   System.setOut(new PrintStream(outContent));
   ...

主要:

class1.doStuff();
class2.doStuff();
...
System.setOut(System.out); //set output back
System.out.println("Success!"); //print something. doesn't work!

您必须将原始 System.out 保存在某处。 System.setOut() 修改 System.out,所以你实际上是在做 System.out = System.out;,当然什么都不做。