有人可以向我解释为什么只使用System.setOut(System.out);
无法将输出重置回System.out吗?
如果我使用:
ByteArrayOutputStream output = new ByteArrayOutputStream();
PrintStream originalOutput = System.out;
System.setOut(new PrintStream(output));
////
System.setOut(originalOut);
它有效。但是,如果我只是使用
System.setOut(System.out);
然后没有。
谢谢
因为System.setOut()更改System.out本身。例如,在本教程中,https://www.tutorialspoint.com/java/lang/system_setout.htm包含以下代码:
package com.tutorialspoint;
import java.lang.*;
import java.io.*;
public class SystemDemo {
public static void main(String[] args) throws Exception {
// create file
FileOutputStream f = new FileOutputStream("file.txt");
System.setOut(new PrintStream(f));
// this text will get redirected to file
System.out.println("This is System class!!!");
}
}
如果未更改System.out,则此代码无法在文本文件中输出。