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

标签 java console console-application

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

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

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

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

最佳答案

我记得很久以前用 C++ 做过类似的事情。我正在使用 ncurses图书馆然后。查看javacurses这似乎是 ncurses 之类的 Java 实现。

关于java - 在 Java 控制台应用程序中保持输入/输出分离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3634839/

相关文章:

java - ManagedScheduledExecutorService 任务能否在服务器重启或崩溃后继续存在?

javascript - javascript 函数中奇怪的控制台输出数组和 array.pop()

c - 我的 for 循环出了什么问题?当我在 C 语言的字母猜谜游戏中只输入 1 个输入时,它会转 2 次

c# - 如何在 .NET Core 控制台应用程序中处理 Scoped 服务实例?

java - 自实例化机制/概念在 Java 中如何工作?

java - 如何在 spring web 应用程序运行时获取 spring-web-mvc 中的 WebApplicationContext 和 DispatcherServlet 的实例

java - 将罗马数字转换为整数

java - 构造函数 Console() 不可见

javascript - $.post() 之后的代码在 post-request 完成之前执行

c 在控制台中绘制直线