Разделение сообщений 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