java很好的控制台输入

时间:2013-02-27 17:29:35

标签: java console

我正在尝试从java中的控制台读取一行。这是我的代码:

System.console().readLine("shell $ ");

这有效,但我想使用像箭头这样的心爱的linux功能移动光标(不像现在那样插入^[[C),向上箭头应该解决上一个命令,选项卡应该自动完成某些东西(这不是必要的,但是有用的,我会对正确的箭头行为感到满意。)

而且 - 不,我想使用“纯java”解决方案,而不是用于libreadline的JNI包装器。

JDK本身或某些提供此类功能的框架是否有某些功能?

3 个答案:

答案 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/jline2https://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();
}

  }