请在此处输入说明。关于…的问题 getch
,我看到类似“每个系统下的控制台都不一样”的语句。但是jvm的实现在每个系统下也是不同的。
好吧,下面的评论表明我的问题并不代表问题的简单性。一些相关问题是:
java中c的“\u getch()”的等价函数>
在java中读取单个字符(参见注解)
控制台应用程序中基于选项卡的自动完成
如何在java中检测箭头键(但这仅与awt有关)
识别java扫描仪或控制台应用程序中的箭头键。
... 诅咒,比如,终端应用程序库(100票,因未见面而关闭……)
对我来说,它们在某种程度上是缺乏c锥函数的衍生物。有些问题比阅读要复杂得多➡ 钥匙。还有一些第三方库可以解决这些问题jline3,jcurses。但是,除了他们是第三方和解决自己的复杂任务,他们必须处理特定的终端设置,jni,或jna,因为原来的问题。那么,如果任务是在输入一个字母或箭头按钮后读取它呢?
在java世界之外,还有gnu readline、curses等项目。但与纯java项目不同,它们不能从“随处运行”vm中获益。也许有些sim卡没有终端功能。另一方面,实现了比终端需要更多硬件功能的awt。因为我想这是值得的。现在越来越多的soc支持x11,甚至不支持终端。那么,成熟的终端是否如此罕见,它们在各种系统上的功能实现是否如此多样化,以至于直接实现的工具在javase中没有一席之地?
1条答案
按热度按时间8zzbczxx1#
在linux上,请尝试
玩得高兴!因为
c
也将保存您从未输入的数据。循环从tty中永久读取值,而不仅仅是您键入的值…您可能需要一些额外的tty配置设置,这取决于您的操作系统风格。
但这是(在控制台上)最接近的
getch
在 java 。哦,关于“完全成熟的终端”:我知道的大多数终端只会在按回车键或类似键时发送数据,至少在默认设置下是这样的。你所说的是以这种形式存在的东西,只存在于PC机上,键盘和屏幕都是执行机器的一部分。