Как сохранить вывод из консоли в файл?

Есть некоторый метод типа void, который выводит в консоль ряд строк, строк много. Нужно все, что будет выведено в консоль, сохранить в файл, но при этом не переписывать метод. Как это реализовать? Заранее спасибо за ответы!


Ответы (1 шт):

Автор решения: Sergey Gornostaev
// Создаём поток для сохранения выводимых данных
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);

// Сохраняем оригинальный поток вывода
PrintStream originalStdOut = System.out;

// Заменяем поток вывода на наш буфер
System.setOut(ps);

// Вызываем функцию, вывод которой нужно перехватить
someFunction();

// Восстанавливаем оригинальный поток вывода
System.out.flush();
System.setOut(originalStdOut);

// Сохраняем в файл перехваченные данные
try (OutputStream fos = new FileOutputStream("some_file.txt")) {
    baos.writeTo(fos);
}
→ Ссылка