No reutilices el OutputStreamObject y crea uno nuevo en cada iteración del bucle
http://stackoverflow.com/questions/2393179/streamcorruptedexception-invalid-type-code-ac
Si te lanza una excepción, publica la excepción completa.
Gracias, ya me funciono, no entiendo muy bien el motivo pero creando el OutputStreamObject , en cada iteración del bucle como me dijiste, me los muestra sin problema.
MUCHAS GRACIAS.
Hola, mi problema es el siguientes, desde el main del programa llamo a esta funcion altaVagon, que os pongo a continuación, y a mostrarVagon. El problema es que cuando llamo a la funcion mostrarVagon, solo me muestra uno de los objetos y a continuación me aparece el erro "invalid type code: AC". La verdad es que no se donde esta el error probé de mil manera y nada.
public void altaVagon () throws ClassNotFoundException{
double carga;
String matri;
Vagon vag;
System.out.println( " INTRODUZCA LA MATRICULA: ");
matri=Entrada.cadena();
System.out.println( " INTRODUZCA LA CAPACIDAD DE CARGA: ");
carga=Entrada.real();
//Abrimos fichero para escritura y guardamos objeto
FileOutputStream escritura =null;
ObjectOutputStream fentrada =null;
try{
escritura = new FileOutputStream (vagones,true);
fentrada = new ObjectOutputStream(escritura);
fentrada.flush();
escritura.flush();
fentrada.reset();
vag=new Vagon(matri,carga);
fentrada.writeUnshared(vag);
} catch (FileNotFoundException e) {
System.out.println(e.getMessage());
} catch (IOException e) {
System.out.println(e.getMessage());
} finally {
try {
if(escritura!=null) escritura.close();
if(fentrada!=null) fentrada.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
public void mostrarVagones()
throws ClassNotFoundException{
Vagon vag;
FileInputStream fsalida=null;
ObjectInputStream datosFichero=null;
try{
//abrimos el fichero para lectura
fsalida = new FileInputStream(vagones);
datosFichero =new ObjectInputStream (fsalida);
//leemos objetos del fichero, hasta final de fichero
do{
vag = (Vagon) datosFichero.readObject();
System.out.println(vag.getAtributos());
}while (datosFichero!=null);
}catch (IOException ex){
System.out.println(ex.getMessage());
}finally {
try {
if (fsalida != null) {
fsalida.close();
}
if (datosFichero != null) {
datosFichero.close();
}
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}