Sauvegarde en JAVA

Sauvegarde en JAVA - Java - Programmation

Marsh Posté le 08-05-2008 à 11:14:18    

Bonjour,  
 
Voilà mon probleme est de sauvegarder une classe afin que je puisse la relancé à l'identique quand je veux.  
 
Ma classe pricipale s'appelle affichageJeu et contient une barre de menu permettant de lancer un nouveau jeu, sauvegader ou charger.  
 
J'ai utiliser Serializable mais ça marche pas. Le fichier save.ser est bien crée mais quand je charge rien ne se passe.  
 
Code de ma classe Affichage Jeu qui implemente Serializable:  
 

Code :
  1. public class AffichageJeu extends JFrame implements ActionListener,Serializable
  2. {
  3. ..................... Code.......................
  4. }
  5. public AffichageJeu(ListeJoueur les_Joueurs,Jouer le_jouer)
  6. {
  7. ................. CODE ...............
  8. }
  9. public void actionPerformed(ActionEvent e)
  10. {
  11.         Object source = e.getSource();
  12. if (source == Sauver)
  13. {
  14.      System.out.println("Sauvegarde en cour......" );
  15.      try {
  16.           // ouverture d'un flux de sortie vers le fichier "save.ser"  
  17.          FileOutputStream fos = new FileOutputStream("save.ser" );
  18.          // création d'un "flux objet" avec le flux fichier  
  19.          ObjectOutputStream oos= new ObjectOutputStream(fos);
  20.          try {
  21.               // sérialisation : écriture de l'objet dans le flux de sortie  
  22.               oos.writeObject(this);
  23.               // on vide le tampon  
  24.               oos.flush();
  25.               }
  26.          finally{
  27.                   //fermeture des flux  
  28.                   try{
  29.                        oos.close();
  30.                        }
  31.                   finally { fos.close();}
  32.                   }
  33.               } catch(IOException ioe) {}
  34.         System.out.println("Sauvegarde Reussi !!!" );
  35.      
  36. }
  37. if (source == Charger)
  38. {
  39.   AffichageJeu chargementJeu=null;
  40.          
  41.   try {
  42.        // ouverture d'un flux d'entrée depuis le fichier "save.ser"  
  43.        FileInputStream fis = new FileInputStream("save.ser" );
  44.        // création d'un "flux objet" avec le flux fichier  
  45.        ObjectInputStream ois= new ObjectInputStream(fis);
  46.        try {
  47.             // désérialisation : lecture de l'objet depuis le flux d'entrée  
  48.             System.out.println("Chargement en cour..." );
  49.             chargementJeu = (AffichageJeu) ois.readObject();
  50.             }
  51.        finally{
  52.     // on ferme les flux  
  53.                 try{
  54.                      ois.close();
  55.          }
  56.                finally {fis.close();}
  57.                 }
  58.         }
  59.    catch(IOException ioe) {}
  60.    catch(ClassNotFoundException cnfe) {}
  61.     (chargementJeu != null)
  62.      {
  63.              System.out.println("Chagement Effectuer !!!" );
  64.       }
  65.        
  66.       this.dispose();
  67.       chargementJeu.setVisible(true);
  68.        chargementJeu.pack();
  69. }

Reply

Marsh Posté le 08-05-2008 à 11:14:18   

Reply

Marsh Posté le 08-05-2008 à 18:54:32    

Je ne suis pas certain de bien comprendre ta problèmatique, mais si tu utilise le JDK 1.6 je crois que la classe javax.tools.JavaCompiler pourrait t'être utile.
 
http://mindprod.com/jgloss/javacompiler.html
 
La class Java compiler te permet de compiler n'importe qu'elle .class (Ou un string)
 
 

Reply

Marsh Posté le 09-05-2008 à 09:09:30    

Citation :

Le fichier save.ser est bien crée mais quand je charge rien ne se passe.  

 

Pour moi, rien ne garanti que la sérialisation s'est bien passée car en cas d'exception tu ne fais pas d'affichage.
Il y a des try/catch/finally un peu partout mais ce n'est pas très propre

 

essaye comme ça :

Code :
  1. ObjectOutputStream oos = null;
  2. try {
  3.   // ouverture d'un flux de sortie vers le fichier "save.ser" 
  4.   FileOutputStream fos = new FileOutputStream("save.ser" );
  5.   // création d'un "flux objet" avec le flux fichier 
  6.   oos = new ObjectOutputStream(fos);
  7.   // sérialisation : écriture de l'objet dans le flux de sortie
  8.   oos.writeObject(new Object());
  9.   // on vide le tampon
  10.   oos.flush();
  11. } catch(IOException ioe) {
  12.   System.out.println("Erreur pendant la sérialisation :" );
  13.   ioe.printStackTrace();
  14. } finally {
  15.   // fermeture des flux
  16.   try {
  17.     if (oos != null) oos.close();
  18.   } catch(IOException ioe) {
  19.     System.out.println("Erreur pendant fermeture du flux :" );
  20.     ioe.printStackTrace();
  21.   }
  22. }



Message édité par Bidem le 09-05-2008 à 09:10:00
Reply

Marsh Posté le 09-05-2008 à 22:30:08    

grisensko a écrit :

Je ne suis pas certain de bien comprendre ta problèmatique, mais si tu utilise le JDK 1.6 je crois que la classe javax.tools.JavaCompiler pourrait t'être utile.
 
http://mindprod.com/jgloss/javacompiler.html
 
La class Java compiler te permet de compiler n'importe qu'elle .class (Ou un string)
 
 


 
Interessant ... Tu l'as déjà utilisé? ça marche bien?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed