Foros del Web » Programación para mayores de 30 ;) » Java »

Serializacion

Estas en el tema de Serializacion en el foro de Java en Foros del Web. Otra vez por aqui molestando jeje... Bueno es que tengo un pequeño problema.... tengo un arreglo de 5 objetos de tipo Libro, el cual contiene ...
  #1 (permalink)  
Antiguo 25/11/2007, 19:45
Avatar de luisec77  
Fecha de Ingreso: mayo-2003
Mensajes: 54
Antigüedad: 21 años
Puntos: 0
Serializacion

Otra vez por aqui molestando jeje...

Bueno es que tengo un pequeño problema.... tengo un arreglo de 5 objetos de tipo Libro, el cual contiene datos tales como autor, titulo, subtitulo, edicion, etc... Este arreglo necesito guardarlo en un archivo, para esto tengo:

try{
System.out.println("Crear la Lista de los Libros");
Fill lib[]=new Fill[5];
for(int i=0;i<lib.length;i++){
System.out.println("Libro"+(i+1));
lib[i]=new Fill();
lib[i].capturaDatos();
}
FileOutputStream fos=new FileOutputStream("Libros");
ObjectOutputStream oos=new ObjectOutputStream(fos);
oos.writeObject(lib);
oos.flush();
oos.close();
}catch(Exception Ext){
System.out.println("Error Durante la Serializacion");
}

Pero pues no logro la Serializacion... Perdonen si el codigo no es lo suficientemente complejo pero apenas estoy aprendiendo ...
  #2 (permalink)  
Antiguo 25/11/2007, 23:29
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Re: Serializacion

Hola:

Ayudaría si dijeras qué problema tienes: ¿salta alguna excepción?. ¿Se escribe el fichero y luego no puedes leerlo? ¿qué tamaño tiene el fichero?

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 26/11/2007, 14:57
Avatar de luisec77  
Fecha de Ingreso: mayo-2003
Mensajes: 54
Antigüedad: 21 años
Puntos: 0
Mensaje Re: Serializacion

Bueno ya logre la serializacion, y no se si lo realizo bien ya que no me marco error alguno. ahora estoy trabado en la deserializacion:

try{
Srial deserial;
FileInputStream fis=new FileInputStream("Libros");
ObjectInputStream ois=new ObjectInputStream(fis);
deserial=(Srial)ois.readObject();
ois.close();
System.out.println("objeto 2: "+ deserial.toString());
}catch(Exception Ext){
System.out.println("Error Durante la Deserializacion\n"+Ext);
}

Bueno francamente no tengo ni lamenor idea de como hacer la deserializacion... al ejecutar el programa me manda un error el cual es:

Error Durante la Deserializacion
java.io.InvalidClassException: Srial; local class incompatible: stream classdesc serialVersionUID = -5393353443536085317, local class serialVersionUID = 6770370138465626078

Si me pudieran apoyar se los agradeceria mucho...
  #4 (permalink)  
Antiguo 04/12/2007, 17:52
Avatar de luisec77  
Fecha de Ingreso: mayo-2003
Mensajes: 54
Antigüedad: 21 años
Puntos: 0
Re: Serializacion

Listo Ya logre completar el programa de serializacion y deserializacion de archivos...
Para imprimir los datos ocupo la clase toString(), - me dijeron que de esta clase no me iba a librar en la deserializacion-, como mencione con esta clase imprimo pero para esto todos los datos los voy concatenando a una variable String.

Esto me sirve ya que me muestra los datos que con anteriodidad introduje, pero que si quiero editar mi arreglo. ¿Hay una manera de hacerlo?.

Estas son mis clases:

Libros.java


import java.io.*;
public class Libros{
public static void main(String args[])throws IOException{
File arch=new File("Libros.dat");
if(arch.exists()){
try{
ObjectInputStream input=new ObjectInputStream(new FileInputStream("Libros.dat"));
ClassX obj1=(ClassX)input.readObject();
System.out.println("Autor"+obj1);
input.close();
}catch(Exception Ext){System.out.println("Error Durante La Deserializacion: \n"+Ext);}
}
else{
try{
ClassX lista2=new ClassX();
ObjectOutputStream output=new ObjectOutputStream(new FileOutputStream("Libros.dat"));
output.writeObject(lista2);
output.flush();
output.close();
} catch(Exception Ext){System.out.println("Error Durante La Serializacion: \n"+Ext);};
}
}

}
_______________________

ClassX.java


import java.io.*;
public class ClassX implements Serializable{
Data lista[]=new Data[1];
public ClassX()throws IOException{
for(int i=0;i<lista.length;i++){
System.out.println("Libro "+(i+1));
lista[i]=new Data();
lista[i].llenado();
}
}
public String toString(){
String texto="";
for(int i=0; i<lista.length; i++){
texto+="\n"+lista[i].autor;
}
return texto;
}
}
_______________________

Data.java



import java.io.*;
public class Data implements Serializable{
String autor,tit,subtit,edit,luged;
int ed,pags,nControl;
public void llenado()throws IOException{
BufferedReader lec=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Autor: ");
autor=lec.readLine();
System.out.println("Titulo del libro: ");
tit=lec.readLine();
System.out.println("Subtitulo del Libro: ");
subtit=lec.readLine();
System.out.println("Editorial: ");
edit=lec.readLine();
System.out.println("Edicion: ");
ed=Integer.parseInt(lec.readLine());
System.out.println("Lugar de Edicion: ");
luged=lec.readLine();
System.out.println("Num. Paginas: ");
pags=Integer.parseInt(lec.readLine());
System.out.println("Numero de Control: ");
nControl=Integer.parseInt(lec.readLine());
}
}_______________________
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:13.