Foro de elhacker.net

Programación => Java => Mensaje iniciado por: turion en 2 Abril 2010, 21:13 pm



Título: Serializacion de objetos y desarealizacion
Publicado por: turion en 2 Abril 2010, 21:13 pm
Hola muy buenas, he estado viendo como se hace y al verdad aparte de que no lo he entendido muy bien que hace pero bueno, aparte de ello lo tengo que utilizar en un programa que estamos haciendo (yo ya lo tengo terminado solo queda eso serializar)


El programa consiste en la gestion de un hotel y ahora me han pedido que pueda guardar los datos de los clientes y sus habitaciones mediante la serializacion.

Alguien me podria explicar como se podria hacer no quiero (por favor) que me pongan un monton de codigo ya hecho solo para copiar y pegar... si pudiera ser me guataria aprender como se hace.


Gracias por todo.


Título: Re: Serializacion de objetos y desarealizacion
Publicado por: Leyer en 2 Abril 2010, 22:11 pm
Es simple, primero que nada los objetos que quieres serializar tiene que impementar la intefaz Serializable, luego para creas un FileOutputStream indicandole la salida, luego ceas un ObjectOutputStream pasandole la instancia del  FileOutputStream ,luego llamas al metodo writeObject(); del ObjectOutputStream pasandole el objeto que quieres serializar en el archivo y finalizas
Código:
salidaObj.flush();
salidaObj.close();

Luego para pbtener los objetos serializados abres un FileInputStream con el nombre del archivos serializado,y inicias un ObjectInputStream pasandole la instancia del FileInputStream, luego obtienes los objetos llamando el metodo
Código
  1. InObj.readObject();
del ObjectInputStream pero para obtenerlos como los objetos que serializaste es necesario hacer un Casting (Client) InObj.readObject();, y ya con esto habras finalizado.

Espero me entiendas
Un Saludo.


Título: Re: Serializacion de objetos y desarealizacion
Publicado por: turion en 2 Abril 2010, 23:59 pm
Gracias voy a probarlo....... a ver que tal


Título: Re: Serializacion de objetos y desarealizacion
Publicado por: kasiko en 9 Abril 2010, 00:49 am
solo una opinion, cuando se habla de "gestion" de algun tipo... lo mejor es usar base de datos... ahora si te lo exigen... me callo.  :-X


Título: Re: Serializacion de objetos y desarealizacion
Publicado por: turion en 11 Abril 2010, 23:12 pm
solo una opinion, cuando se habla de "gestion" de algun tipo... lo mejor es usar base de datos... ahora si te lo exigen... me callo.  :-X


Si si me lo exigian.... era una practica por cierto ya me salio¡¡¡ ajaj

por si le sirve a alguien:

Lo unico que tienes que hacer es implementar (implements) todas las clases que vallas a serializar

y 2º poner la serializacion de objetos que a mi me quedo de la siguiente forma:




Código:
    public void leer()throws IOException, ClassNotFoundException 
    {
   
   JOptionPane.showMessageDialog(dialog,"leyendo","Informacion",JOptionPane.INFORMATION_MESSAGE);
               try{ 
               
               ObjectInputStream in = new ObjectInputStream (new FileInputStream("datos.out"));
             
               for(Habitacion h: habitaciones){
                 h.setReserva((Reserva)in.readObject());
               }
               in.close();
                 }
       catch (IOException e)
       {
        JOptionPane.showMessageDialog(dialog,"Error de lectura","Informacion",JOptionPane.INFORMATION_MESSAGE);
       }

   
    }
 
   
   
   
   
   public void guardar()
     {
        JOptionPane.showMessageDialog(dialog,"Estamos Guardando...","Informacion",JOptionPane.INFORMATION_MESSAGE);
   
   try{
        ObjectOutputStream salida= new ObjectOutputStream(new FileOutputStream("datos.out"));
       
       

          for(Habitacion h:habitaciones){
          //        if(h.getReserva() != null)
                    salida.writeObject(h.getReserva());
                   
                }     
                   
             
             salida.close();
    }
       catch (IOException e)
       {
         JOptionPane.showMessageDialog(dialog,"Error al guardar " + e.getMessage(),"Informacion",JOptionPane.INFORMATION_MESSAGE);
       }

  }

   
}