java - 真正的交互式命令行

标签 java

Java中是否有可能获取用户“按下时”按下的内容 而不是当他按下回车键时?

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

最佳答案

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

这与 Unix 略有不同,其中 Ctrl+D 会将当前缓冲的行发送到应用程序(不带换行符),并且应用程序只会感知到行的结尾当您在 Return 或另一个 Ctrl+ 之后按 Ctrl+D 发送空缓冲区时的流D

编辑:在 Windows 上,您也许可以使用 SetConsoleMode函数允许您读取单个字符。我不确定你会怎么调用它;似乎有三个选择:

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

关于java - 真正的交互式命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12404258/

相关文章:

java - 捕获位图并添加水印

java - 具有模拟上下文的 Hadoop 单元测试

java - 为什么JInternalFrame的setSize不起作用

java - 如何将 Jackson PropertyNamingStrategy 与 Immutables 库一起使用

java - Hibernate 一对多到 JSON 给出 : 500 internal server error

java - 清除图表会导致内存泄漏吗?

java - 在游戏上打印具有透明背景的 JLabel + 使用 Swing 添加声音

java - GWT 垂直菜单

java - 使用Java将Mat复制到OpenCV中的原始数组? (出现 "multiple of channels count"错误)

java - Java 中的 AES 加密与 PHP 不同