JAVA Dpt.
de Organización & Estructura de la Información
ANEXO-I: Métodos de las Clases InputStream y OutputStream
Un Stream es un Mecanismo para pasar datos de un elemento de un programa a otro
(llamados fuente y destino respectivamente). Estos elementos pueden ser programas,
archivos, periféricos del ordenador, una posición de memoria, e incluso la Internet. Existen
dos clases de Streams: de entrada y de salida, según el sentido del flujo de información
visto desde el propio elemento.
♦ Algunos métodos incluidos en la clase InputStream son:
Ejemplos:
• InputStream s = getInputStream ( );
System.Out.println( "Bytes leidos: " + s.read( ) );
• read( ) • if ( s.skip( 1024 ) != 1024 )
• skip( ) System.Out.println( "He saltado menos de lo previsto " );
• avalaible( )
• markSupported( ) • if ( s.avalaible( ) != 1024 )
System.Out.println( "No hay suficientes bytes para leer" );
• mark( )
• InputStream s = getAnInputStream( );
if ( s.markSupported( ) ) { // ¿Soporta marcas y reset?
... // Leer el stream
s.mark( 1024 );
... // Leer un límite de 1024 bytes
s.reset( );
... // Ahora pueden releerse esos 1024 bytes
}
else {... } // No puede utilizarse mark ni release; hacer
alguna otra cosa.
♦ Algunos métodos incluidos en la clase OutputStream son:
Ejemplos:
• write( ) • OutputStream s = getOutputStream ( );
byte[ ] BuferSalida = new byte [ 1024 ]; // Cualquier tamaño vale
• flush( )
fillInData( BuferSalida ); // Datos a sacar
• close( ) s.write( BuferSalida );
© Jesús Alonso Segoviano Octubre 1998 -1-
JAVA Dpt. de Organización & Estructura de la Información
♦ Clases derivadas de InputStream:
Clase Ejemplo
• ByteArrayInputStream // Crea un Stream de entrada, en su forma más simple:
a partir de un array de bytes en memoria.
Byte[ ] miBufer = new byte[ 1024 ];
RellenarElBufer ( myBufer );
InputStream s = new ByteArrayinputStream( miBufer );
• FileInputStream // Asocia un Stream de entrada a un fichero de datos, para
leer de él.
InputStream s = new FileInputStream( "un path
específico\nombre de fichero" );
• FilterInputStream // Provee filtros a los Streams de entrada, que pueden
encadenarse, y realizar algún proceso especial con los
bytes leidos.
InputStream s = getAnInputStream;
FilterInputStream s1 = new FilterinputStream( s );
FilterInputStream s2 = new FilterinputStream( s );
FilterInputStream s3 = new FilterinputStream( s );
... s3.read( ) ...
• ObjectInputStream // Efectúa el proceso inverso a ObjectOutputStream (ver
más abajo). Reconstruye un objeto ‘serializado’ en bytes
a su original.
• PipedInputStream // Produce los datos que van a trasmitirse por una ‘tubería’ :
mecanismo de comunicación entre dos threads, y que se
van a escribir en el extremo opuesto de la tuberia, con
PipedOutputStream.
• SequenceInputStream // Construye un Stream compuesto de otros.
InputStream s1 = new FileinputStream( “laPrimeraParte” );
InputStream s2 = new FileinputStream( “elResto” );
InputStream s = new SequenceInputStream( s1, s2 );
... s.read( ) ... // Lee de cada Stream por turno.
• StringBufferInputStream // Convierte un String en un InputStream.
String unBufer = “Ahora es el tiempo de lo bueno”
InputStream s = new StringBufferInputStream( unBufer );
© Jesús Alonso Segoviano Octubre 1998 2
JAVA Dpt. de Organización & Estructura de la Información
Clases derivadas de OutputStream:
• ByteArrayOutputStream // Escribe la salida a un array de bytes; es la inversa de
ByteArrayInputStream.
OutputStream s = new ByteArrayOutputstream( );
s.write( 123 );
• FileOutputStream // Asocia un Stream de entrada a un fichero de datos, para
escribir en él.
OutputStream s = new FileOutputStream( "un path
específico\nombre de fichero" );
• FilterOutputStream // Provee filtros a los Streams de salida, que pueden
encadenarse, y realizar algún proceso especial con los
bytes leidos.
OutputStream s = getAnOutputStream;
FilterOutputStream s1 = new FilterOutputStream( s );
FilterOutputStream s2 = new FilterOutputStream( s );
FilterOutputStream s3 = new FilterOutputStream( s );
... s3.write( 123 ) ...
// Lee un Stream de entrada y lo convierte en una secuencia
• ObjectOutputStream de bytes (‘serializar’ )
• PipedOutputStream // Produce los datos que van a trasmitirse por una ‘tubería’ :
mecanismo de comunicación entre dos threads, y que se
van a escribir en el extremo opuesto de la tuberia, con
PipedInputStream.
© Jesús Alonso Segoviano Octubre 1998 3