Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/03/2014, 08:33
Avatar de chuidiang
chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Flujo a Cerrar?

Hola:

Los InputStream que reciben en su constructor otro InputStream (en este caso DataInputStream recibe un FileInputStream), no son flujos reales, son solamente "capas" que se añaden sobre el flujo real para facilitar alguna tarea (por ejemplo, en este caso, readInt() readFloat() etc en vez de solo get() bytes). En los patrones de diseño se llama patrón decorador.

Si cierras el externo, lo unico que va a hacer es llamar al close() del interno y así sucesivamente hasta llegar al flujo real, que es el más interno. El close() de DataInputStream lo unico que hace es llamar al close() de FileInputStream, que es el que realmente cierra el fichero. En la API de DataInputStream puedes ver para close() "The close method of FilterOutputStream calls its flush method, and then calls the close method of its underlying output stream."

Si cierras directamente el interno, también te vale.

Resumiendo, puedes cerrar cualquiera de ellos independientemente de su nivel, puesto que los más externos van a ir llamando a los de abajo hasta llegar al último que es el único flujo real a fichero.

Se bueno.
__________________
Apuntes Java
Wiki de Programación