Поймать отпечатки экрана в Java - PullRequest
6 голосов
/ 21 мая 2010

Есть класс, с которым я работаю и который имеет функцию display(), которая выводит некоторую информацию на экран. Мне не разрешено это менять. Есть ли способ «поймать» строку, которую он выводит на экран снаружи?

Отображается на консоли.

Ответы [ 2 ]

5 голосов
/ 21 мая 2010

Самое близкое, что я могу придумать, это перехватить и переслать все, что напечатано через System.out.

Взгляните на метод setOut(java.io.PrintStream).

Полный пример будет:

import java.io.PrintStream;

public class Test {

    public static void display() {
        System.out.println("Displaying!");
    }

    public static void main(String... args) throws Exception {
        final List<String> outputLog = new ArrayList<String>();
        System.setOut(new PrintStream(System.out) {
            public void println(String x) {
                super.println(x);
                outputLog.add(x);
            }

            // to "log" printf calls:
            public PrintStream printf(String format, Object... args) { 
                outputLog.add(String.format(format, args));
                return this;
            }
        });

        display();
    }
}
2 голосов
/ 21 мая 2010

Я не знаком со стандартной операцией display () в Java, она может быть уникальной для среды, с которой вы работаете.это печатает на консоль?отображает окно сообщения?

Если вы говорите о распечатках, которые проходят через консоли System.out.println() и System.err.println(), тогда даВы можете перенаправить стандартный ввод и стандартный вывод.Используйте:

    System.setErr(debugStream);
    System.setOut(debugStream);

И создайте соответствующие потоки (например, файлы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...