Problema con ObjectOutputStream (serializacion)

Estoy trabajando serilización de objetos y los quiero almacenar en un archivo utilizando ObjectOutputStream, al instanciarlo, escribe unos bytes de cabecera en el fichero, antes incluso de que escribamos nada, el problema se presenta si escribimos unos datos en el fichero y lo cerramos, luego volvemos a abrirlo para añadir datos, esto escribe una nueva cabecera justo al final del fichero. Al crear el ObjectInputStream, este lee la cabecera del principio y luego se pone a leer objetos. Cuando llega a la segunda cabecera que se añadió al abrir por segunda vez el fichero para añadirle datos, me da un error StreamCorruptedException: invalid type code: AC y no me permite leer más objetos. Me encontré una redefinición de ObjectOutputStream pero no funciona
public class MiObjectOutputStream extends ObjectOutputStream
{
/** Constructor que recibe OutputStream */
public MiObjectOutputStream(OutputStream out) throws IOException
{
super(out);
}
/** Constructor sin parámetros */
protected MiObjectOutputStream() throws IOException, SecurityException
{
super();
}
/** Redefinición del método de escribir la cabecera para que no haga nada. */
protected void writeStreamHeader() throws IOException
{
}
}

Al hacer la lectura me tira lo siguiente:
StreamCorruptedException: invalid stream header
Por favor, alguna idea de como solucionar esto.

1 Respuesta

Respuesta
1
El objeto que estas almacenando debe ser de tipo Serializable.
Y debes almacenar los datos como objects y para leerlo igual con el object
Gracias, ya conseguí hacerlo, ahora me surge la interrogante de como borrar determinados objetos del archivo, ¿podrías ayudarme?
Saludos.
Tendrías que leerlos todos y dejarlos almacenados en un objeto de tipo colección, en memoria, luego eliminas el elemento que quieres y vuelves a escribir el archivo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas