2009-12-16 23 views
5

¿Es posible usar NIO con System.in?Java: use NIO con System.in

Me gustaría de alguna manera tratar a 'stdin' como un canal seleccionable. ¿Alguien ha encontrado una manera de hacer esto?

Respuesta

1

duplicado:

How to get SelectableChannel from an InputStream?

hmmm ... pensándolo bien, para la entrada estándar puede haber una solución. He encontrado esta referencia:

http://www.javafaq.nu/java-example-code-346.html

y en particular:

SystemInPipe.java (clase que encapsula la entrada estándar como canal seleccionable)

+2

Aprecio lo que ese tipo está tratando de hacer en SystemInPipe, pero aún no es mucho mejor que engendrar un hilo daemon para sondearlo. El problema es que no puedes interrumpir ese hilo (nunca). – Justin

+0

Este es un ejemplo clásico de por qué las respuestas que son principalmente enlaces son fuertemente desaconsejadas en StackOverflow. El enlace a 'javafaq.nu' está muerto, por lo que la respuesta no tiene valor. –

4

No sé acerca de un SelectableChannel, pero se puede convertir un InputStream a un ReadableByteChannel con

using java.nio.channels.Channels; 

... 

ReadableByteChannel in = Channels.newChannel(System.in); 
0

Haces c Debería crear un Pipe y un hilo personalizado para leer desde la entrada estándar y escribir en el conducto.

Una vez que tenga el Pipe, puede obtener el canal de entrada.