Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
947 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [RESOLU]Enregistrement classe dans fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU]Enregistrement classe dans fichier

n°1650128
infoman64
JE SUIS LA POUR TOI MON AMI
Posté le 28-11-2007 à 11:27:22  profilanswer
 

Bonjour  
Voila, a la fermeture de mon logiciel je dois enregistrer  ma classe principale dans un fichier
voici les methodes de sauvegarde et de récupération
 

Citation :

void recuperation_Sauvegarde()
 {
  sauvegarde =new File(nom_fichier_sauvegarde);
  boolean exists =sauvegarde.exists();
     if (exists) {
      System.out.println("Le fichier existe" );
      if(sauvegarde.length()==0){
       System.out.println("Le fichier est vide" );
       domain=new Domaine(nomDomaine);
       User u=new User(1,"admin","admin",false);
       domain.ajoutUtilisateur(u);
       
      }else{
       System.out.println("Le fichier n'est pas vide" );
       if(!load(nom_fichier_sauvegarde)){
        System.out.println("Le fichier n'est pas au bon format, on reiniatilise le serveur " );
        domain=new Domaine(nomDomaine);
        User u=new User(1,"admin","admin",false);
        domain.ajoutUtilisateur(u);
         
       }
         }
         
     } else {
      System.out.println("Le fichier n'existe pas" );
      domain=new Domaine(nomDomaine);
      User u=new User(1,"admin","admin",false);
      domain.ajoutUtilisateur(u);
     }
 }
public  void save(String file){
         
        try{
            // On crée la sortie vers le fichier
            ObjectOutputStream  out = new ObjectOutputStream(new FileOutputStream(System.getProperty("user.dir" ) +"/"+file));
            System.out.println("nb user "+domain.getNbUtilisateur());
            out.writeObject((Domaine)domain);
            System.out.println(System.getProperty("user.dir" ) + "\\" + file + " saved" );
        } catch (FileNotFoundException e) {
            e.printStackTrace();
           
        } catch (IOException e) {
            e.printStackTrace();
           
        }  
               
    }
   
    public  boolean load(String file){
     boolean retour=true;
        try{
            // crée le fichier
            FileInputStream fichier = new FileInputStream(System.getProperty("user.dir" ) +"/"+file);
            // On crée l'entrée à partir du fichier
            ObjectInputStream ois = new ObjectInputStream(fichier);
            // On charge la liste à partir du fichier
            domain =(Domaine)ois.readObject();
 
            System.out.println(System.getProperty("user.dir" ) + "\\" + file + " chargé" );
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            retour=false;
        } catch (IOException e) {
            e.printStackTrace();
            retour=false;
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            retour=false;
        }
        return retour;  
    }


 
donc voila, quand j'eteins le serveur, tout ce passe correctement il m'enregistre bien dans le fichier aucune erreur(grace a la methode save).
juste avant de quitter tout, je fais afficher le nombre d'utilisateur inscrit dans le domaine

Citation :


nb user 1
C:\Users\fred\workspace\Projet\src\MonPackage\sauvegarde/sauvegarde.txt saved


 
Si je relance le serveur, tout ce passe bien, aussi  

Citation :

Le fichier existe
Le fichier n'est pas vide
C:\Users\fred\workspace\Projet\src\MonPackage\sauvegarde/sauvegarde.txt chargé


 mais en faite voila mon probleme, apparament la sauvegarde il me met rien dans le fichier
voici la seul chose qui me met dans le fichier

Citation :

¬í sr MonPackage.Domaine\AÞI˜Ô   xp


J'ai deja utilise ces methodes qui marcher pour un autre truc projet, mais la j'ai reteste ca marche plus,ca fait pareil
alors est ce ce le fait que je suis sous vista, je sais pas je comprend pas trop
si vous avez des methode pour faire la meme chose je suis preneur  
Merci


Message édité par infoman64 le 01-12-2007 à 16:46:56
mood
Publicité
Posté le 28-11-2007 à 11:27:22  profilanswer
 

n°1650160
jbourdello​n
Posté le 28-11-2007 à 12:08:28  profilanswer
 

C'est normal, il serialise ta classe domain, et normalement lors du load(..) si tu fais un System.out.println("nb user "+domain.getNbUtilisateur());  tu devrais avoir la meme reponse que lors du save(...) ce qu'il y a dans le fichier on s'en fout un peu, c'est java qui gere.

n°1650187
infoman64
JE SUIS LA POUR TOI MON AMI
Posté le 28-11-2007 à 13:18:48  profilanswer
 

ben voila c ca le probleme
quand je recupere j'ai plus rien, c comme si il m'avais mis une classe vide
System.out.println("nb user "+domain.getNbUtilisateur());
je remet ca apres la reouverture, et voila ce qu'il me met, c ca que je comprend pas.
nb user 0

n°1651301
Pandinus2k​4
Posté le 30-11-2007 à 11:12:44  profilanswer
 

Salut,
 
Peut-être ton champ nbUtilisateur est-il déclaré transient dans ta classe Domaine ? Pense aussi à fermer tes flux sur les ObjectOutputStream

n°1651692
infoman64
JE SUIS LA POUR TOI MON AMI
Posté le 01-12-2007 à 16:46:38  profilanswer
 

j'ai trouve mon erreur
ca venait pas de mes methodes mais de ma classe,
 
ca venait d'une hasthable qui etait initialisé des sa declaration,  
et nan dans le contructeur, voila j'ai change ca, et depuis tout marche Merci pour vos aides


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [RESOLU]Enregistrement classe dans fichier

 

Sujets relatifs
[Résolu]Javascript, div, visibility et position[Résolu] chmod() et les variables $_GET['var']
[Résolu] un script ne respercte pas <form action="">Lancer téléchargement d'un fichier à la base du serveur.
[Résolu] ][Java] Conversion d'une chaîne HTML en Unicodesql et fichier ".dat"
Avoir un fichier de langues pour un site statiqueInsertion fichier dans base de donnée
Formulaire/méthode GET et action [résolu][FORTRAN] Problème lecture fichier
Plus de sujets relatifs à : [RESOLU]Enregistrement classe dans fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR