2009-06-09 13 views
9

Sólo uno rápido aquí.¿Por qué usar java.io.Console?

¿Cuáles son los beneficios de usar java.io.Console en lugar de utilizar un BufferedReader envolver un InputStreamReader para System.in?

¿Por qué debería usarlo?

¡Gracias por cualquier consejo!

Respuesta

8

Puede usar java.io.Console para presentar una línea de comando interactiva al usuario. Se podría hacer todo eso con System.in sí mismo, sino que tendría que poner en práctica las cosas como darse cuenta de cuando se hizo la entrada, o readPassword, etc.

+2

borrando caracteres? ¿No es eso lo que realiza la consola del sistema? – OscarRyz

+2

Si usa un BufferedReader en System.in, entonces no necesita "notar" el borrado de caracteres ni nada de eso.readPassword es una buena razón para usar Console. – Chochos

+2

Gracias chicos, tienes razón. Eliminé la parte sobre borrar personajes. –

10

Porque es un código que ya está escrito para usted ... no es necesario volver a inventar la rueda. Lo más probable es que no lo vayas a obtener mejor de lo que ya es.

+0

que es verdad! entonces ¿estás diciendo que no debería desarrollar mis propios tipos genéricos de listas enlazadas también para cada proyecto? : P –

6

Ver java.io.Console is finally here!

Una de las características más populares solicitudes de J2SE en los últimos tiempos ha sido el solicitado para mejorar la compatibilidad con la consola y proporciona una forma de introducir contraseñas con eco desactivado. Los desarrolladores conocen esta característica 4050435 , ya que se ha estado escondiendo en la lista de las RFE Top 25 durante algún tiempo.

3

java.io.La consola solo funciona cuando se inicia un programa Java desde una línea de comando sin redireccionar STDIN/STDOUT.

La principal ventaja que veo con Console over System.in es que tienes el método readPassword(), que no reproduce los caracteres escritos por el usuario (no pude encontrar una manera de hacer esto con System. en).

También tiene readLine() que presentará un mensaje y leerá una sola línea. No tiene que crear su propio LineNumberReader.

Pero, si desea que su programa Java pueda leer desde STDIN cuando se redirige de un archivo o canalización, igual debe utilizar System.in.

2

Otro truco que estoy seguro de que no obtendrás con la consola: he creado mis propios flujos de entrada y salida y he reemplazado System.in/out con ellos. Mi implementación de la secuencia se agregó a un archivo de registro y también a la pantalla.

Cuando encendí la "Información de depuración" de mi pobre, incluso podría hacer que me diga de qué programa/línea proviene el sysout (aunque fue lento. Creó una excepción y examinó la entrada de la pila apropiada para que estaba desactivado por defecto)