 Tutoriales
I/O: Leer y Escibir
Usar Streams de Proceso
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.
|
|
|