Как сохранить вывод из консоли в файл?
Есть некоторый метод типа 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);
}