Наконец-то понял это ... вот что ты делаешь. Сначала определите эти функции:
private ConsoleReader console = ...;
private CursorBuffer stashed;
private void stashLine() {
this.stashed = this.console.getCursorBuffer().copy();
try {
this.console.getOutput().write("\u001b[1G\u001b[K");
this.console.flush();
} catch (IOException e) {
// ignore
}
}
private void unstashLine() {
try {
this.console.resetPromptLine(this.console.getPrompt(),
this.stashed.toString(), this.stashed.cursor);
} catch (IOException e) {
// ignore
}
}
Затем, когда вы хотите вывести новые данные, сначала вызовите stashLine()
, чтобы сохранить текущий ввод с консоли, затем выведите все новые строки вывода, затем вызовите unstashLine()
, чтобы восстановить их.