Методы System.setOut
и System.setErr
позволяют изменять объекты PrintStream
, к которым относятся переменные System.out
и System.err
. Вы можете использовать их, чтобы заменить PrintStream
объекты по умолчанию объектами, которые захватывают вывод, или делать с ним все, что вы хотите.
Followup
Я не хочу заменять PrintStreams, потому что мне все еще нужен вывод для перехода в командную строку.
Ваш код может позаботиться об этом:
- Создать подкласс
OutputStream
, который записывает все выходные данные в другой экземпляр OutputStream
, а также захватывает выходные данные. Сделайте «другой» экземпляр параметром constructort.
- Получить текущие значения
System.out
и System.err
.
- Создайте экземпляр вашего подкласса дважды, со значениями
System.out
и System.err
в качестве параметров конструктора соответственно.
- Оберните эти два экземпляра как
PrintStream
экземпляры.
- Позвоните
System.setOut
и System.setErr
, чтобы заменить System.out
и System.err
на PrintStream
экземпляры.