19 noviembre, 2010

Lectura de Datos por Consola

Lectura de Datos por Consola en Java

Las entradas y salidas (E/S) en Java utilizan streams conocidos como secuencias o flujos. Un flujo representa una corriente de datos con (al menos) un escritor y un lector. Por ejemplo, cuando leemos del teclado estamos usando una corriente de entrada donde el programa es el lector.

Si deseamos que el usuario ingrese datos (números o cadenas de caracteres) en una consola de Java es necesario utilizar la Clase InputStreamReader, donde utilizaremos el Objeto System.in, este método solo lee bytes, lo que significa que si ingresamos un caracter cualquiera, nos devolverá un número correspondiente a los bytes del caracter ingresado.

Creación de un Objeto de Tipo InputStreamReader:
InputStreamReader leer = new InputStreamReader (System.in);


Con el InputStreamReader leer que creamos podemos utilizar el método .read() para leer los caracteres, pero aún así no es suficiente puesto que necesitamos de otros "puentes" que conviertan el flujo en modo carácter a uno en modo buffer (un tipo de cadena de caracteres). Para ello contamos con clases como BufferedReader que recibe en su constructor el flujo de caracteres y maneja el flujo en la forma de buffer, con un método como .readLine() que lee los caracteres hasta encontrar un final de línea ("\n"). Un ejemplo de estas transformaciones (de flujo de byte a flujo de carácter y de éste a buffer) se encuentra en el manejo de teclado.

Creación de un BufferedReader:
BufferedReader entrada = new BufferedReader(leer);

Y ahora que lo hacemos para leer una línea desde Consola es:
entrada.readLine();

Estos caracteres leídos desde Consola pueden almacenarse en un String para luego retornar el valor así:
String cadena="";
cadena = entrada.readLine();
return cadena;

Obviamente para poder usar el return, el código anterior debe estar dentro de un método que devuelva un dato de tipo String, aunque esta forma no es obligatoria si se utiliza en programas cortos

No hay comentarios.:

Publicar un comentario