Tu portal de
formación online
United States

Infórmate
Inicio » Catálogo » Curso de Java » Introducción a los flujos o streams

Curso de Java

Introducción a los flujos o streams

Los flujos surgen por la necesidad de las aplicaciones Java de interaccionar con el exterior de dos posibles formas:

  • Generando salida a la consola del DOS, a un fichero, etc.
  • Capturando datos procedentes del teclado, de ficheros, de páginas web, etc.

Concepto de flujo: es como un río. El agua en movimiento es el flujo, su contenido son los datos. Lo que permite que esos datos viajen de un origen a un destino es el agua en movimiento, es decir, el flujo. En el caso de la captura, desde un programa Java, de datos introducidos por un usuario mediante teclado, el origen es el teclado, el destino, el programa Java y los datos, lo tecleado por el usuario.

Java modela flujos mediante clases del paquete java.io. Este paquete se estudiará más adelante, por el momento se va a explicar cómo una aplicación Java captura datos introducidos por el usuario a través del teclado y cómo realiza todo tipo de operaciones sobre los mismos.



Captura de datos desde teclado

Se necesita lo siguiente:

  • Obtener un objeto que modele la fuente de entrada de datos “teclado” en un programa Java. Más adelante se estudiarán otras fuentes de entrada de datos como ficheros o conexiones a sockets.

Para ello, lo primero que debe tenerse presente es que el teclado es la entrada estándar de datos en un PC.

A continuación, debe tenerse en cuenta, que cualquier entrada genérica de datos a un programa Java, se modela mediante un objeto de la clase abstracta java.io.InputStream.

Bueno, pues en la API se observa que un objeto de esta clase es lo que devuelve la variable de campo estática "in" de la clase java.lang.System. Además, la explicación API de esta variable nos dice que representa la entrada estándar de datos de un programa Java. 

CONCLUSIÓN: en los códigos que capturen datos procedentes del teclado, se empleará System.in para modelar el teclado.

Para la salida es lo mismo: la salida estándar de datos en un PC es la consola del DOS. La salida genérica de datos de un programa Java se modela mediante un objeto de la clase abstracta java.io.OutputStream.

En la API, se observa que un objeto PrintStream (hereda de OutputStream y, por tanto, es un objeto OutputStream) es lo que devuelve la variable de campo estática "out" de System. Además, la explicación API de esta variable dice que representa la salida estándar de datos de un programa Java.

CONCLUSIÓN: en los códigos que generen salida a través de la consola del DOS, se empleará System.out para modelar la consola del DOS.

¿Cómo se escribe en la consola?

A través de métodos adecuados de PrintStream. Concretamente se han empleado print(..) y println(..) durante el tiempo que se lleva de curso

No es esta la única forma de interaccionar con el exterior que tiene un código Java. Más adelante se verá cómo se puede generar salida creando un fichero, por ejemplo.

  • Crear un flujo que permita al programador leer datos del teclado. Este flujo va a ser de entrada o lectura de datos y va a modelarse con una objeto de la clase InputStreamReader. Ir al API y estudiar sus constructores.
  • Crear un filtro encargado de leer los datos de forma óptima mediante la aplicación de  un método de lectura adecuado. El filtro se modela con un objeto de la clase java.io.BufferedReader y el método de lectura adecuado va a ser String readLine() que, ya se verá, lanza una excepción del tipo IOException que debe ser gestionada correctamente. En un principio, se gestionará mediante la cláusula throws IOException a continuación del método main.

CONCLUSIÓN GENERAL:

  • El flujo u objeto InputStreamReader es lo que permite leer datos.
  • El System.in u objeto InputStream es el argumento del constructor de InputStreamReader y modela el origen de los datos que se leen, es decir, el teclado.
  • El filtro u objeto BufferedReader permite, mediante la utilización del método String readLine(), leer de forma óptima del flujo.

Vídeo explicativo del proceso de lectura de datos desde teclado.

Lectura de datos desde teclado

Ejemplo: muestra cómo se programa un código Java que tiene que capturar datos introducidos por el usuario desde teclado.

Al ejecurlo, se mostrará por consola un mensaje indicando al usuario que introduzca un número. El usuario lo tecleará y pulsará enter. Después, se mostrará otro mensaje invitándole a que teclee otro número. El usuario lo tecleará y pulsará de nuevo enter. Finalmente, el código calculará la suma de los dos números introducidos. Todos los códigos  en c:\cursojava\unidad3 si no se emplea IDE o en el workspace correspondiente si se emplea Eclipse.

Ejemplo:

Código fuente

Vídeo explicativo del programa.

Explicación de un código que lee datos procedentes de teclado

Por consola:

Teclea el primer numero: 10

Teclea el segundo numero: 23

Suma de 10 y 23 es 33

NOTA: la creación del filtro podría hacerse en una sola línea de este modo:

BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

 



Si desea obtener un acceso sin restricciones a los contenidos del curso de Java y disfrutar de todas las herramientas del aula virtual (Videos explicativos streaming, acceso a los foros, chat, ejercicios resueltos, la ayuda del tutor, audioconferencia, estudio de grabación, test y actividades de autoevaluación, etc...) puede inscribirse completamente gratis y comenzar a realizar de forma inmediata el curso.