Подтвердить что ты не робот

Сброс стандартного выходного потока

Я знаю, что в Java есть функция для установки стандартного потока вывода на любое пользовательское значение с помощью метода System.setOut.

Но есть ли какой-либо метод для reset стандартного вывода на тот, который был сохранен ранее, или тот, который является стандартным выходом?

4b9b3361

Ответ 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?");
}