Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/05/2014, 14:52
Avatar de chuidiang
chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: eliminar un objeto de un fichero binario

Hola:

Un StreamCorruptedException da al leer un ObjectInputStream, no al escribir, imagino que la excepción no te salta en ese trozo de código, sino cuando intentas leer luego el fichero escrito.

El posible motivo es el siguiente.

Cada vez que haces un new ObjectOutputStream(...), se envía automáticamente una cabecera de bytes. Luego puedes escribir objetos en ese ObjectOutputStream y el contenido de tu fichero será cabecera de bytes + objetos.

Cuando hacdes un new ObjetctInputStream(...) se intenta leer una cabecera de bytes escrita por un ObjectOutputStream. Luego puedes leer objetos, tantos como hayas escrito.

El problema se presenta si cuando se espera leer una cabecera de bytes no se encuentra y esto sucede si el número de new ObjectOutputStream o el sitio donde se hacen en la secuencia de escritura de ficheros, es distinto que el número de new ObjectInputStream o la secuencia en que se hace.

En tu ejemplo, si has escrito como muestras, debes leer haciendo un new ObjectInputStream y usando ese mismo ObjectInputStream para leer todos los objetos en un bucle, es decir, la misma secuencia que has hecho al escribir.

Tienes la explicación más detallada aquí http://www.chuidiang.com/java/ficher...tosFichero.php

Se bueno.
__________________
Apuntes Java
Wiki de Programación