Aquellos que como yo vienen de la vieja escuela Java (por ejemplo java 1.1 o 1.2) recordarán que era algo engorroso la cantidad de lineas de código a escribir para ingresar datos por linea de comandos con Java(hay que comprender que desde un principio Java no estuvo pensado para esto), he aqui un ejemplo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class EntradaDatosViejaForma { public static void main(String[] args){ InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); System.out.println("Introducir un numero: "); String dato; try { dato = br.readLine(); System.out.println("El numero introducido fue: "+dato); } catch (IOException e) { e.printStackTrace(); } } } |
Desde la versión 1.6 de java existe la clase java.io.Console, una clase que nos hace un poco mas intuitivo el manejo (entrada y salida) de datos por linea de comandos, al igual que otros lenguajes como podrían ser C/C++.
Les muestro ahora la clase anterior haciendo uso de la clase Console
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import java.io.Console; public class EntradaDatosNuevaForma { public static void main(String[] args) { Console console = System.console(); if (console == null) { System.err.println("No hay consola."); System.exit(1); } console.printf("Introducir un numero: "); String dato = console.readLine(); console.printf("El numero introducido fue: %s \n", dato); } } |
Como se puede observar es código es menor e incluso no hay que agregar una parte de código que para mi es engorrosa (en este caso) y son los bloques try, catch, así como tampoco manejar flujos, sino que en cambio se hace todo de una forma mas amigable por medio de la invocación de métodos de la clase Console. Hay una parte del código que seguro les causa un poco de curiosidad y es el ubicado entre las lineas 9-12, y este se debe, ya que hay ocasiones en que la obtención de la consola puede ser null, esto es debido a que las operaciones de consola o linea de comandos no están permitidas, por ejemplo al intentar el programa anterior desde el IDE Eclipse.
Además de los métodos de la clase Console utilizados en el segundo ejemplo, también existen métodos para entrada de password, lo cual deshabilita la impresión (o mostrado) de los valores ingresados por linea de comandos, así como también métodos para salida de datos formateados.
Si no has utilizado antes esta clase, no te preocupes tiene una API muy sencilla.
¿Has hecho alguna aplicación interesante con la clase Console? cuentalo y comparte tu experiencia con nosotros.