Cor*_*rey 3 java bufferedreader
我想提示用户开始输入字符,并且我希望他们能够输入任意长的字符,直到他们点击 control+d 退出。
例如,他们可以输入一串数字,例如:1234567,一旦他们决定按 control+d,他们输入的行就会显示出来(因此不必按回车键)
我想我需要一个缓冲阅读器或其他东西。有什么建议?
rlibby 所说的恰到好处:CTL-D 将导致终端将缓冲输入刷新到 JVM。但是,按键事件本身被终端捕获并执行,而不是通过。
幸运的是,它很容易被发现。如果用户在其自己的一行上点击 CTL-D,则没有要刷新的输入……对于 JVM 而言,这与 EOF 无法区分。因此,System.in.read()将根据-1合同返回InputStream。如果你System.in用了BufferedReader,readLine()将返回null。
这是我刚刚编写的交互式命令行工具的主要循环:
BufferedReader systemIn = new BufferedReader(new InputStreamReader(System.in, "UTF-8"));
String line;
while((line = systemIn.readLine()) != null) {
// my program loop.
}
Run Code Online (Sandbox Code Playgroud)
值得指出的一件事是,如果用户在输入字符后(但在按回车键之前)点击 CTL-D,您将获得这些字符。我不相信有一种方法可以在 CTL-D 不在自己的行上时检测它。
免责声明:我不知道这如何适用于 Windows。
| 归档时间: |
|
| 查看次数: |
23246 次 |
| 最近记录: |