Trabajar con Canales Filtrados
Se puede añadir un canal filtrado a otro canal para filtrar los datos que se se están leyendo o escribiendo en el canal original. El paquete java.io contiene estos canales filtrados que son subclases de FilterInputStream o de FilterOutputStream:
- DataInputStream y DataOutputStream
- BufferedInputStream y BufferedOutputStream
- LineNumberInputStream
- PushbackInputStream
- PrintStream (este es un canal de salida)
Esta sección muestra cómo utilizar los canales filtrados a través de un ejemplo que utiliza DataInputStream y DataOutputStream. Además, esta sección muestra cómo escribir nuestros propios canales filtrados.
Utilizar Canales Filtrados
Para utilizar un canal filtrado de entrada (o salida), se añade el canal filtrado a otro canal de entrada (o salida). Se puede añadir un canal filtrado a otro canal cuando se crea. Por ejemplo, se puede añadir un DataInputStream al canal de entrada estandard de la siguiente forma:
DataInputStream dis = new DataInputStream(System.in.read());
String input;
while ((input = dis.readLine()) != null) {
. . . // Hacer algo interesante aquí
}
Podrías hacer esto para poder utilizar los métodos más convenientes readXXX(), como readLine(), implementado por DataInputStream.
Esta página proporciona una explicación de un ejemplo de utilización de DataInputStream y DataOutputStream, dos canales filtrados que pueden leer y escribir datos de tipos primitivos de Java.
La mayoría de los programadores encuentran la necesidad de implementar sus propios canales que filtren o procesen los datos que se están leyendo o escribiendo desde un canal. Algunas veces el procesamiento es independiente del formado de los datos, como un contador de los ítems de una cadena, y otras veces el procesamiento está relacionado directamente con los propios datos o el formato de los datos, como leer o escribir los datos contenidos en filas y columnas. Frecuentemente, estos programadores subclasifican FilterOutputStream y FileInputStream para conseguir sus objetivos.
Ozito