我正在尝试从java中的控制台读取一行。这是我的代码:
System.console().readLine("shell $ ");
这有效,但我想使用像箭头这样的心爱的linux功能移动光标(不像现在那样插入^[[C
),向上箭头应该解决上一个命令,选项卡应该自动完成某些东西(这不是必要的,但是有用的,我会对正确的箭头行为感到满意。)
而且 - 不,我想使用“纯java”解决方案,而不是用于libreadline的JNI包装器。
JDK本身或某些提供此类功能的框架是否有某些功能?
答案 0 :(得分:2)
java中没有这样的内置功能。为了能够这样做,即创建一个能够执行诸如循环前面的命令,使用箭头键移动的控制台,需要为这些键编写一个动作处理程序,这在java中是不可能的(根据内置)因为输入是在java中缓冲的,所以只要按 Enter 就会刷新它。
您可以在JNI中使用Java Native Language。据我所知,您可以查看java console api,详细了解blog。
答案 1 :(得分:2)
我必须回应自己。
我没有找到真正纯粹的java库来处理它,但它可以毫无疑问地为* nix编写(System.in实际上没有缓冲)。
我正在使用jline2(https://github.com/jline/jline2)https://github.com/jline/jline2now,因为它只需要小的enogh并且只需要二进制加法来支持窗口;我已经测试了它的罐子,而且他们没有重新编译任何 * nix和我曾经找到的win32操作系统。
所以,答案是:这是可能的,但没有人写过这样的100%纯库。
答案 2 :(得分:-1)
来自vmoksha的Sunilkumkar
public class ReadConsoleSystem {
public static void main(String[] a``rgs) {
System.out.println("Enter something here : ");
try{
BufferedReader bufferRead = new
BufferedReader(new InputStreamReader(System.in));
String s = bufferRead.readLine();
System.out.println(s);
}
catch(IOException e)
{
e.printStackTrace();
}
}