Buenas, tengo un problema a la hora de escribir objetos en archivo, me explico, escribo una serie de objetos, para ello abro los stream y sus fileOutput correspondientes y todo bien, o eso parece, ya que al intentar leer del archivo solo me lee los que han sido escritos por el primero stream, cuando en el archivo si figuran los demas objetos, es como si la estructura del archivo al escribir el 2º stream se alterara para los sucesivos.
Os pongo un fragmento del codigo.
Nota: lo del numero de peliculas deberia ir en otro archivo para mantener memoria pero aun "adaptandolo" para que funcione no va, este no es el error.
Todas las clases que lo necesitan implementan Serializable.
Saludos y gracias
Os pongo un fragmento del codigo.
Código [Seleccionar]
public class AdministracionElementos {
public static int numPeliculas = 0;
public static void main(String[] args){
Pelicula p1 = new Pelicula("Expediente XXXXXXXXX","Señor X",1000.0,"Cihhhhhencia-Ficcion");
Pelicula p2 = new Pelicula("Expediente X","Señor X",100.0,"Ciencia-Ficcion");
Pelicula p3 = new Pelicula("Avatar","Señor Y",222.0,"Ciencia-Ficcion");
try{
//Añadimos pelicula
añadirPeliculaArchivo(p2);
añadirPeliculaArchivo(p3);
//Leemos peliculas
//for(int i = 1;i <= numPeliculas;i++){
leerPeliculasArchivo();
//}
}catch(IOException excIO){
System.out.println("No se ha podido realizar la operacion de escritura");
}catch(ClassNotFoundException excNF){
}
}
public static void añadirPeliculaArchivo(Pelicula pelGrabar) throws IOException{
//Creo Stream de escritura
FileOutputStream fileOut = new FileOutputStream("datosPeliculas",true);
//Creo el escritor de objetos
ObjectOutputStream salidaObj = new ObjectOutputStream(fileOut);
salidaObj.writeObject(pelGrabar);
numPeliculas =numPeliculas + 1;
salidaObj.flush();
salidaObj.close();
fileOut.close();
}
public static void leerPeliculasArchivo() throws IOException, ClassNotFoundException{
Pelicula auxiliar;
//Extraccion de archivo
FileInputStream fileInp = new FileInputStream("datosPeliculas");
ObjectInputStream entradaObj = new ObjectInputStream(fileInp);
System.out.println(numPeliculas);
for(int i = 1;i <= numPeliculas;i++){
auxiliar = (Pelicula) entradaObj.readObject();
auxiliar.mostrarPelicula();
}
entradaObj.close();
fileInp.close();
}
Nota: lo del numero de peliculas deberia ir en otro archivo para mantener memoria pero aun "adaptandolo" para que funcione no va, este no es el error.
Todas las clases que lo necesitan implementan Serializable.
Saludos y gracias