我正在尝试从 java 的控制台读取一行。这是我的代码:
System.console().readLine("shell $ ");
这可行,但我想使用心爱的Linux功能,例如箭头来移动光标(不像现在那样插入^[[C
),向上箭头应该解决上一个命令,选项卡应该自动完成一些东西(这个不是必需的,但很有用,我会对正确的箭头行为感到满意)。
并且 - 不,我想使用“纯 java”解决方案,而不是 libreadline 的 JNI 包装器。
JDK本身或某些框架是否提供了某些功能?
最佳答案
java中没有这样的内置功能。为了能够做到这一点,即创建一个能够执行诸如循环执行先前命令、使用箭头键移动之类的操作的控制台,需要为这些键编写一个 Action 处理程序,这在 java 中是不可能的(根据内置的功能),因为输入是在 java 中缓冲的,一旦您按下 Enter,它就会被刷新。
您也许可以在 JNI(即 Java native 语言)中执行此操作。据我所知,你可以看看java console api ,更多详细信息blog .
关于java 不错的控制台输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15118425/