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.
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