真正互动的命令行

时间:2012-09-13 10:30:20

标签: java

Java是否有可能让用户按下“按下时” 而不是当他回来的时候?

因此,例如,如果用户点击ABC然后点击 Ctrl + Z 我希望程序结束那里 (到达流的结束)而不是,当他按下返回时。

1 个答案:

答案 0 :(得分:3)

当您按 Ctrl + Z 时,Windows实际上并不结束流;您可以继续编辑该行,只有当您按返回时,应用程序才会看到流的结尾。

这与Unix略有不同,其中 Ctrl + D 会将当前缓冲的行发送到应用程序(没有换行符),应用程序只会感知结束通过在返回之后或在另一个 Ctrl 之后按 Ctrl + D 发送空缓冲区时的流 d

编辑:在Windows上,您可以使用SetConsoleMode功能来阅读单个字符。我不确定你怎么称呼它;似乎有三种选择:

  1. 通过JNI到一个调用SetConsoleMode
  2. 的DLL
  3. 调用调用SetConsoleMode
  4. 的程序
  5. 将程序包装在调用SetConsoleMode
  6. 的启动器中
  7. 编辑:使用JNA调用SetConsoleMode。