jueves, 20 de julio de 2017

Todo sobre: Los flujos de Java

Los flujos de Java
Prácticamente todos los programas deben leer datos del exterior para procesarlos y después presentar los resultados. La información que necesita un programa normalmente se obtiene mediante la entrada de datos por el teclado o leyendo un fichero. Los resultados de la ejecución de un programa se pueden presentar por la consola, la impresora o en un fichero. El tipo de información que se utiliza tanto en las entradas como en las salidas puede tener diversos formatos: texto, imagen, sonido, binario, etc.



En Java, la entrada de datos se realiza mediante un flujo de entrada. Para realizar la entrada de datos es necesario abrir el flujo de entrada, leer la información del flujo hasta el final y por último cerrar el flujo. La salida se hace mediante un flujo de salida. Para realizar la salida de datos es necesario abrir el flujo de salida y a continuación se escribe en él toda la información que se desee, por último, se cierra el flujo.

Este esquema de entradas y salidas basadas en un flujo permite que las entradas sean independientes de la fuente de datos y que las salidas sean independientes del destino de los datos.

Un flujo en Java es un objeto que se utiliza para realizar una entrada o salida de datos. Representa un canal de información del que se puede leer o escribir datos de forma secuencial. Existen dos tipos de flujos en Java, los que utilizan bytes y los que utilizan caracteres.

La siguiente tabla muestra los flujos de entrada de datos de Java:

Flujos con bytes
Flujos con caracteres

InputStream
 ByteArrayInputStream
 FileInputStream
 FilterInputStream
  BufferedInputStream
  DataInputStream
  LineNumberInputStream
  PushBackInputStream
 ObjectInputStream
 PipedInputStream
 SequenceInputStream
 StringBufferInputStream

Reader
 BufferedReader
  LineNumberReader
 CharArrayReader
 FilterReader
  PushBackReader
 InputStreamReader
  FileReader
 PipedReader
 StringReader

La siguiente tabla muestra los flujos de salida de datos de Java:

Flujos con bytes
Flujos con caracteres

OutputStream
 ByteArrayOutputStream
 FileOutputStream
 FilterOutputStream
  BufferedOutputStream
  DataOutputStream
  PrintStream
 ObjectOutputStream
 PipedOutputStream

Writer
 BufferedWriter
 CharArrayWriter
 FilterWriter
 OutputStreamWriter
  FileWriter
 PipedWriter
 PrintWriter
 StringWriter

Existen flujos con bytes y flujos con caracteres que se aplican a la misma entrada o salida. FileInputStream y FileOutputStream son flujos para leer y escribir bytes en un fichero, FileReader y FileWriter también son flujos que se aplican a ficheros, pero en este caso para leer y escribir caracteres.


Los flujos se pueden utilizar solos o combinados. Si se combinan dos flujos, por ejemplo uno que lea caracteres de un archivo con otro que convierta a mayúsculas los caracteres, entonces el resultado final es un flujo del que se leen caracteres en mayúsculas.