2

Java のコンソールから行を読み込もうとしています。これが私のコードです:

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

これは機能しますが、矢印を使用してカーソルを移動する(^[[C今のように挿入するのではなく)、上矢印は前のコマンドに対応する必要があり、タブは何かをオートコンプリートする必要があります(これは必要ではありませんが便利です。正しい矢印に満足します行動)。

そして -- いいえ、libreadline の JNI ラッパーではなく、「純粋な Java」ソリューションを使用したいと考えています。

JDK自体またはそのような機能を提供するフレームワークに機能はありますか?

4

3 に答える 3

2

Javaにはそのような組み込み機能はありません。これを可能にするために、つまり、前のコマンドを循環したり、矢印キーで移動したりすることができるコンソールを作成するには、Javaでは不可能なそのようなキーのアクションハンドラーを作成する必要があります(組み込みの機能)入力はJavaでバッファリングされ、を押すとすぐにフラッシュされるためですEnter

JNI、つまりJavaNativeLanguageでこれを実行できる場合があります。私の知る限り、JavaコンソールAPIを見ることができます。詳細については、このブログをご覧ください。

于 2013-02-27T17:43:14.373 に答える
2

私は自分自身に答えなければなりません。

それを処理する本当に純粋なJavaライブラリは見つかりませんでしたが、間違いなく* nix用に作成できます(System.inは実際にはバッファリングされていません)。

私は jline2 ( https://github.com/jline/jline2 ) https://github.com/jline/jline2nowを使用しています。私はそれがjarであることをテストしましたが、これまでに見つけた* nixおよびwin32 OSで再コンパイルせずに動作しています。

したがって、答えは次のとおりです。これは可能ですが、そのような 100% 純粋なライブラリを作成した人はいません。

于 2013-03-01T13:18:44.800 に答える
-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();
}

  }
于 2013-02-28T12:05:15.413 に答える