java.io.InputStream
y java.io.OutputStream
Las principales clases para representar "Streams" son : InputStream
y OutputStream
, como su nombre lo indica la primera de estas es utilizada para "Streams" de Entrada (Input
) mientras la segunda "Streams" de Salida (Output
); a partir de estas dos Clases son derivadas todas las Clases que hacen uso de datos de entrada y salida.
Algunas Clases que heredan ("Inherit") el comportamiento de InputStream
son : FileInputStream
y PipedInputStream
y algunas Clases que heredan ("Inherit") de OutputStream
son: ByteArrayOutputStream
y ObjectOutputStream
; existen otra gran cantidad de Clases que heredan ("Inherit") el comportamiento de estas Clases bases, inclusive la Clase/Método System.out.println
es heredada ("Inherited") de la Clase java.io.PrintStream
la cual a su vez desciende de java.io.OutputStream
.
Se recomienda observar la documentación incluida en el JDK para conocer el uso,comportamiento y métodos de las diversas Clases heredadas ("Inherited") de InputStream
y OutputStream
.
java.io.Writer
y java.io.Reader
Existen otras dos variaciones para las Clases InputStream y OutputStream que son : Writer y Reader, la principal diferencia entre estas Clases es que las primeras ofrecen lo que es conocido como byte-orientated I/O, mientras Writer y Reader ofrecen character-based I/O, en otras palabras las Clases InputStream y OutputStream solamente soportan "Streams" de 8-bits byte, mientras las Clases Writer y Reader soporta "Streams" de 16-bits.
La importancia de 16-bits radica en Java utilizando Unicode, al utilizarse 8-bits no es posible emplear muchos caracteres disponibles en Unicode, además debido a que las Clases Writer y Reader son una adición más reciente al JDK, estas poseen mayor velocidad de ejecución a diferencia de sus contra partes InputStream y OutputStream.
Ambas variaciones siguen en uso hoy en día, inclusive existen dos Clases que permiten una conversión hacia estas Clases más recientes:
InputStreamReader
convierte un InputStream
a Reader
OutputStreamWriter
convierte un OutputStream
a Writer
En la siguiente sección serán descritos ejemplos que hacen uso de "Streams".