frosty7777777
@frosty7777777

Как в Java удалить крайний символ или строку, напечатанную на экране терминала?

Есть ли в принципе такая возможность?
  • Вопрос задан
  • 2019 просмотров
Решения вопроса 1
pi314
@pi314
Президент Солнечной системы и окрестностей
Возможность есть, но она никак не связана с Java. Это можно сделать с помощью т.н. Escape-последовательностей, если они поддерживаются терминалом (если терминал работает в режиме эмуляции, например, VT-52 или VT-100). В таком режиме работает большинство терминалов в Linux.

Удалить последнюю строку, выведенную с символом перевода каретки (когда после вывода строки курсор находится в позиции 1 следующей строки) можно, например, так:
System.out.println("Hello world"); //Print the line

System.out.print(String.format("\033[%dA",1)); // Move cursor up by 1 line
System.out.print("\033[2K"); // Erase the line


Полный список кодов можно найти, например, вот тут.
upd:
С помощью Escape-последовательностей можно делать намного больше: переключать цвета, позиционировать курсор, "стирать" части строки или весь экран, и т.д. и т.п. Для интенсивного использования ANSII, особенно под Виндой, може оказаться полезной Jansi.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы