Разделение сообщений System.Out и Scanner (Java)

Есть ли способ, не используя пакет графического интерфейса пользователя, чтобы System.out не вводил себя в середине вашего приглашения?

Сценарий представляет собой многопоточную программу, в которой вы отправляете и получаете сообщения на сервер.

При записи на сервер вы получаете сообщение с сервера.

"Я пишу СООБЩЕНИЕ ОТ СЕРВЕРА".

Таким образом, вы в конечном итоге видите что-то подобное в своей консоли.

Есть ли способ обойти эту проблему и по существу отделить подсказку от ввода?

1 ответ

Решение

Вы можете сделать что-то вроде этого, чтобы временно буферизовать вывод:

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    PrintStream oldOut = System.out;
    System.setOut(new PrintStream(out));

    // System.in read code

    System.setOut(oldOut);
    System.out.println(out.toString());

То же самое для System.err

Другие вопросы по тегам