Análisis de entrada de teclado Java en una aplicación de consola
Acabo de empezar a jugar conJLine para analizar la entrada de caracteres en modo consola. Parece funcionar bien, pero me pregunto:
¿Hay alguna forma sin bloqueo en JLine para averiguar si hay caracteres disponibles? (es decir, comokbhit()
en Windows)
Supongo que siempre podría ajustar la entrada del teclado en su propio hilo que luego ofrece los caracteres del teclado en una cola segura para el hilo principal, pero parece que debería ser innecesario.
EDITAR: Este es el análisis de carácter por carácter. No voy a usar una GUI. La entrada / salida usual de InputStream en Java en modo consola requiere que primero presione la tecla Intro (por ejemplo, solo es una entrada almacenada). No me digas que la entrada de caracteres por caracteres en modo consola es imposible en Java; no lo es JLine lo hace usando una interfaz portátil con una implementación dependiente de la plataforma.
Editar actualización: Pude hackear una clase auxiliar para hacer el bloqueo de E / S en un subproceso de trabajo (usando JLine para la E / S por carácter, advertencia: ¡debe analizar Ctrl-C usted mismo!) Y luego comunicarse a través de un cola sincronizada con una rutina isempty (). Por lo que estoy haciendo ahora está bien, pero realmente me gustaría saber una buena manera de hacer esto en el futuro.