重置标准输出流
我知道Java中有一个函数可以使用方法将标准输出流设置为任何用户定义的值。System.setOut
但是,是否有任何方法可以将标准输出重置为之前存储的输出或标准输出?
我知道Java中有一个函数可以使用方法将标准输出流设置为任何用户定义的值。System.setOut
但是,是否有任何方法可以将标准输出重置为之前存储的输出或标准输出?
您可以通过 FileDescriptor.out 获取标准输出的文件描述符
。要重置标准输出以打印到控制台,您需要
System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out)));
另一种方法是简单地抓住原始对象,如下所示:
PrintStream stdout = System.out;
System.setOut(new PrintStream(logFile));
// ...
System.setOut(stdout); // reset to standard output
这是一个古老的问题,但它一直在Google搜索中出现,我想纠正它。您实际上可以通过使用 FileDescriptor
类来获取它。调用应该给你一些打印到标准输出的东西。new PrintStream(new FileOutputStream(FileDescriptor.out)))
import java.io.FileDescriptor;
import java.io.FileOutputStream;
import java.io.PrintStream;
public static void main(String [] args) {
System.err.println("error.");
System.out.println("out.");
System.setOut(System.err);
System.out.println("error?");
System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out)));
System.out.println("out?");
}