在 Java 控制台应用程序中保持输入/输出分离

Hen*_*ann 5 java console console-application

我正在用 Java 编写一个控制台应用程序。它类似于聊天客户端:输入和输出是异步进行的。问题是,如果在用户正在打字的过程中进行了某些输出,那么屏幕上的行会混淆。

我正在寻找一种解决方案,它允许我将输入区域与输出区域分开。目前我正在使用一个额外的线程来轮询 System.in 上的 BufferedReader。

该程序需要在 Linux 服务器上运行并通过 ssh 会话进行访问。因此,任何仅在此环境中有效的提示都可以。

有没有可以做到这一点的高级库?或者是否有使用终端/ ANSI 代码的聪明技巧?ANSI 代码 s(保存光标)和 r(恢复光标)可能会有所帮助,但我如何知道跳转到哪里进行输出以及如何处理滚动?

K E*_*son 2

我记得很久以前就使用过类似的东西,但是是在 C++ 中。当时我正在使用ncurses库。查看javacurses,它似乎是 ncurses 之类的 Java 实现。