Сброс стандартного выходного потока
Я знаю, что в Java есть функция для установки стандартного потока вывода на любое пользовательское значение с помощью метода System.setOut
.
Но есть ли какой-либо метод для reset стандартного вывода на тот, который был сохранен ранее, или тот, который является стандартным выходом?
Ответы
Ответ 1
Вы можете получить файловый дескриптор для стандартного вывода FileDescriptor.out
. Для reset стандартного вывода на консоль, вы
System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out)));
Другой способ - просто сохранить исходный объект следующим образом:
PrintStream stdout = System.out;
System.setOut(new PrintStream(logFile));
// ...
System.setOut(stdout); // reset to standard output
Ответ 2
Это старый вопрос, но он все время появляется в поиске Google, и я хотел его исправить. Вы можете получить его, используя класс FileDescriptor
. Вызов new PrintStream(new FileOutputStream(FileDescriptor.out)))
должен дать вам что-то, что печатает на stdout.
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?");
}