Java - WriteObject

 
Vista:

WriteObject

Publicado por jose (15 intervenciones) el 24/04/2007 19:50:54
Buenas, estoy escribiendo en ficheros un objeto, y lo hace correctamente, pero al leerlo salta un error de java.io.StreamCorruptedException: invalid stream header.
No estoy seguro de si puede realizar esta conversion:

A la hora de escribir hago lo siguiente:
String [][] usuarios2 = new String [fils][cols];
salida.writeObject(usuarios2);
salida.flush();
salida.close();

Y para leer:
String [][] usuarios = (String[][])entrada.readObject();
entrada.close();

Puedo volver a leer los datos y almacenarlos en una matriz de String como hago?
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:WriteObject

Publicado por chuidiang (950 intervenciones) el 24/04/2007 20:01:23
Hola:

Cuando abres un fichero para escribir objetos y empiezas a escribir objetos, java primero mete unos bytes de cabecera que sólo sabe él que significan. Cuando abres para leer, la primera vez que lees, busca esos bytes y si no los encuentra te da el error que te esta dando.

Para que funcione bien, debes abrir el fichero desde cero y escribir todos los objetos consecutivamente y luego cerrar el fichero. No puedes volver a abrirlo con append para añadir más datos.

Para leer, tienes que abrirlo una sola vez desde el principio y leer todos los datos, hasta el final.

El "segundo problema" que se comenta en este enlace http://www.chuidiang.com/java/ficheros/ObjetosFichero.php#problemas explica esto con un poco más de detalle.

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:WriteObject

Publicado por jose (15 intervenciones) el 24/04/2007 23:44:47
Si, ya lei tu articulo antes de hacerlo, y por eso lo hago como dices, leyendo el fichero entero y volviendolo a escribir, cosa que solo ocurre una vez cada vez que se lanza la aplicacion. Por eso no entiendo el error, ya que creo que esta bien, por eso mi duda era el poder leer el objecto [][]. Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar