Los streams de proceso realizan alguna suerte de operaci�n, como almacenamiento o codificaci�n de caracteres, mientras leen o escriben. Al igual que de los stream de profundidad, java.io contiene parejas de streams. Uno que realiza una operaci�n particular durante la lectura y otro que realiza la misma operaci�n (o la inversa) durante la escritura. Esta tabla nos muestra los streams de proceso de java.io:
Proceso | Stream de Caracteres | Streams de Bytes |
---|---|---|
Almacenamiento | BufferedReader, BufferedWriter |
BufferedInputStream, BufferedOutputStream |
Filtrado | FilterReader, FilterWriter |
FilterInputStream, FilterOutputStream |
Conversi�n entre Bytes y Caracteres |
InputStreamReader, OutputStreamWriter |
� |
Concatenaci�n | � | SequenceInputStream |
Serializaci�n de Objetos | � | ObjectInputStream, ObjectOutputStream |
Conversi�n de Datos | � | DataInputStream, DataOutputStream |
Contaje | LineNumberReader | LineNumberInputStream |
Exploraci�n | PushbackReader | PushbackInputStream |
Impresi�n | PrintWriter | PrintStream |
Observa que muchas veces, java.io contiene streams de caracteres y de bytes que realizan el mismo proceso pero para diferentes tipos de datos.
- BufferedReader y BufferedWriter BufferedInputStream y BufferedOutputStream
- Almacenan los datos en buffers mientras leen o escriben, por lo tanto reduciendo as� el n�mero de accesos requeridos a la fuente de datos original. Los streams con buffer normalmente son m�s eficientes que los que no lo utilizan.
- FilterReader y FilterWriter FilterInputStream y FilterOutputStream
- Clases abstractas, como sus padres. Definen el interface para filtros de streams, que filtran los datos que est�n siendo le�dos o escritos.
Trabajar con Streams Filtrados m�s adelante en esta lecci�n, nos mostrar� como usar filtros de streams y como implementar el nuestro propio.
- InputStreamReader y OutputStreamWriter
- Una pareja de reader y writer que realiza un puente entre streams de bytes y streams de caracteres. Un InputStreamReader lee bytes desde un InputStream y los convierte a caracteres usando la decodificaci�n de caracteres por defecto o una decodificaci�n de caracteres especificada por su nombre.
De forma similar, un OutputStreamWriter convierte caracteres a bytes usando una decodificaci�n de caracteres por defecto o una decodificaci�n de caracteres especificada por su nombre y luego escribe estos bytes en un OutputStream.
Podemos aprender el nombre de la codificaci�n de caracteres por defecto llamando a System.getProperty("file.encoding").
- SequenceInputStream
- Concatena varios streams de entrada en un s�lo stream de entrada.
C�mo Contanerar Ficheros tiene un peque�o ejemplo de esta clase.
- ObjectInputStream y ObjectOutputStream
- Se usa para serializar objetos. Puedes ver Serializaci�n de Objetos.
- DataInputStream y DataOutputStream
- Lee o escribir tipos de datos primitivos de Java de una forma independiente de la m�quina.
C�mo usar DataInputStream y DataOutputStream nos ense�a un ejemplo de uso de estos dos streams.
- LineNumberReader y LineNumberInputStream
- Sigue la pista del n�mero de l�nea mientras lee.
- PushbackReader y PushbackInputStream
- Dos streams cada uno con un caracter (o byte) de menos en el buffer.
Algunas veces, cuando se leen datos desde un stream, encontraremos �til explorar el siguiente �tem del stream para decidir que hacer luego. Sin embargo, si lo exploramos, necesitaremos ponerlo de nuevo en su sitio para que pueda ser le�do y procesado normalmente.
- PrintWriter y PrintStream
- Contienen m�todos de impresi�n de conveniencia. Estos son streams sencillos para escribir, por eso frecuentemente veremos otros streams envueltos en uno de estos.