Java中是否有可能获取用户“按下时”按下的内容 而不是当他按下回车键时?
因此,例如,如果用户点击 ABC 然后点击 Ctrl+Z 我希望程序在那里结束 (到达流末尾)而不是之后,当他按回车键时。
最佳答案
当您按Ctrl+Z时,Windows实际上并没有结束流;您可以继续编辑该行,并且当您按 Return 时,应用程序只会看到流的结尾。
这与 Unix 略有不同,其中 Ctrl+D 会将当前缓冲的行发送到应用程序(不带换行符),并且应用程序只会感知到行的结尾当您在 Return 或另一个 Ctrl+ 之后按 Ctrl+D 发送空缓冲区时的流D。
编辑:在 Windows 上,您也许可以使用 SetConsoleMode函数允许您读取单个字符。我不确定你会怎么调用它;似乎有三个选择:
- 通过 JNI 调用 SetConsoleMode 的 DLL
- 调用一个调用 SetConsoleMode 的程序
- 将您的程序包装在调用 SetConsoleMode 的启动器中
- 编辑:使用JNA调用SetConsoleMode。
关于java - 真正的交互式命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12404258/