Tu comunidad Java parlante Streams
Inicio | Cursos infosintesis.net liberados | Java SE | Copia de un fichero
Copia de un fichero
Paso 1: Operativa

Son un paso de comunicación entre una fuente de información y un destino. Para nuestros fines, nuestro programa de Java se encuentra en un extremo del flujo.

Algoritmos de lectura y escritura

No importa de donde viene la información o donde está yendo (disco duro, Internet, otro programa) y tampoco importa que tipo de información está siendo leída o escrita, el algoritmo de  lectura y de escritura es esencialmente el mismo. El modo más sencillo de usar un flujo es crearlo y llamar a sus métodos para enviar o recibir datos:

Lectura

abrir un stream
mientras (más información)
   
leer información
cerrar el stream

Escritura

abrir un stream
mientras (más información)
   
escribir información
cerrar el stream

Jerarquía del paquete java.io dependiendo del tipo de datos

El paquete java.io contiene una colección  de Clases que soportan los algoritmos mostrados anteriormente para leer y escribir datos. Estas Clases están divididas en dos jerarquías distintas dependiendo si estamos trabajando con los siguientes tipos de datos:

Caracteres

Manejan archivos de Texto y otras fuentes de texto.

Bytes

Manejan bytes, enteros y otros tipos simples de datos.

Jerarquía del paquete java.io dependiendo de la función a desempeñar

Dentro de estas dos  jerarquías podemos hacer una segunda división de las Clases según su función desempeñada:

Streams que leen o escriben de una fuente de datos

Tipo de Fuente Final Streams de Caracteres Streams de Bytes
Memoria java.io.CharArrayReader
java.io.CharArrayWriter
java.io.ByteArrayInputStream
java.io.ByteArrayOutputStream
java.io.StringReader
java.io.StringWriter
java.io.StringBufferInputStream
Cauce o Pipe java.io.PipedReader
java.io.PipedWriter
java.io.PipedInputStream
java.io.PipedOutputStream
Fichero java.io.FileReader
java.io.FileWriter
java.io.FileInputStream
java.io.FileOutputStream

Streams de conveniencia o filtros

Se logran resultados más sofisticados si se asocia un filtro con un stream antes de leer o escribir datos. Un filtro es un tipo de stream que modifica la forma en que se maneja un stream existente.

Imaginemos una represa hecha por unas nutrias en un río. La represa regula el flujo de agua desde los puntos altos hasta los puntos bajos de la corriente de agua. La represa es una especie de filtro que si se retira el agua fluye con mucho menos control.

El procedimiento para usar un filtro en un stream es el siguiente:

Los métodos a llamar en un filtro son iguales a los métodos que se llaman en un stream: por ejemplo hay métodos read() y write() tal y como los habría en un stream sin filtros.

También se puede asociar un filtro a otro filtro.

Proceso Stream de Caracteres Streams de Bytes
Buffer java.io.BufferedReader
java.io.BufferedWriter
java.io.BufferedInputStream
java.io.BufferedOutputStream
Filtrado java.io.FilterReader
java.io.FilterWriter
java.io.FilterInputStream
java.io.FilterOutputStream
Conversión entre Bytes y Caracteres java.io.InputStreamReader
java.io.InputStreamWriter

----------

Concatenación

----------

java.io.SequenceInputStream
Serialización de Objetos

----------

java.io.ObjectInputStream
java.io.ObjectOutputStream
Conversión de Datos

----------

java.io.DataInputStream
java.io.DataOutputStream
Contador de líneas java.io.LineNumberReader java.io.LineNumberInputStream
Impresión java.io.PrintWriter java.io.PrintStream
JavaDabbaDoo.org
Tu comunidad Java parlante. Cursos abiertos, tutoriales y mucho mucho más ...