IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Persistance des données Java Discussion :

[Sérialisation] Problème


Sujet :

Persistance des données Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 464
    Par défaut [Sérialisation] Problème
    Salut !

    J'ai un problème avec la sérialisation; je vous donne le code et vous explique ensuite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    public class Fichier {
     
        private Placement sudomodele;
        private Jeu jeumodele;       
     
        public Fichier(Placement smodele,Jeu jmodele) {
            this.sudomodele = smodele;
            this.jeumodele = jmodele;
        }
     
        public void ouverturet() throws IOException{
            JFileChooser jfc=new JFileChooser(".");  
            jfc.setMultiSelectionEnabled(false);
            int retour = jfc.showOpenDialog(null);
            if(retour == JFileChooser.APPROVE_OPTION) {
                File inputFile = new File(jfc.getSelectedFile().getName());
                Scanner sc = new Scanner(inputFile).useDelimiter("\n");
                jeumodele.nouveaujeu();
                sudomodele.initialisationGrille(sc);
            }
        }
     
        public void ouverturej() throws IOException{
            jeumodele.nouveaujeu();
            try {
                FileInputStream fichier = new FileInputStream("sudomi.jeu");
                ObjectInputStream ois = new ObjectInputStream(fichier);
                sudomodele = (Placement) ois.readObject();
            } 
            catch (java.io.IOException e) {
                e.printStackTrace();
            }
            catch (ClassNotFoundException e) {
                e.printStackTrace();
            }        
            sudomodele.notifyObservers();        
        }    
     
        public void sauvegarde(){       
            try {
                FileOutputStream fichier = new FileOutputStream("sudomi.jeu");
                ObjectOutputStream oos = new ObjectOutputStream(fichier);
                oos.writeObject(sudomodele);
                oos.flush();
                oos.close();
            }
            catch (java.io.IOException e) {
                e.printStackTrace();
            }       
        }
    }
    Et pour info :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    public abstract class Sudoku {
     
        protected Macase[][] grillep= new Macase [9][9];    
        protected int chiffrechoisi=0;
        protected boolean [] tabmessage = new boolean [4];
        protected boolean jeudemarre;
        protected boolean nouveaujeu;
     
        public Sudoku(){
            for(int i=0;i<9;i++){
                for(int j=0;j<9;j++){
                    this.grillep[i][j]=new Macase();
                }
            }
            for (int i=0;i<tabmessage.length;i++) {
                tabmessage[i]=false;
            }
            this.jeudemarre=false;
        }
     
    ...
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class Placement extends Sudoku implements java.io.Serializable{
     
        private static final long serialVersionUID = 3032191156608661892L;
     
    ...
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    public class Pgrmsudoku extends JFrame{
     
        private static final long serialVersionUID = 6787164115803472272L;
     
        Placement sudoku = new Placement();    
        Jeu jeu = new Jeu(sudoku);
        PanelVue1 pVue1 = new PanelVue1(sudoku);
        PanelVue2 pVue2 = new PanelVue2(sudoku,jeu);
        Fichier fichier = new Fichier(sudoku,jeu);    
        Menu menuBar = new Menu(sudoku,fichier,jeu);
     
        public static void main(String args[]) {
     
            try {
                UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
            }
            catch (Exception e) {
                e.printStackTrace();
            }        
            Pgrmsudoku f = new Pgrmsudoku();    
            f.setPreferredSize(new Dimension(900,700));
            f.setResizable(false);
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        
            f.pack();
            f.setVisible(true);
        }
     
        public Pgrmsudoku(){
     
            this.setTitle("Jeu du Sudoku");
            this.getContentPane().add(pVue1, BorderLayout.EAST);
            this.getContentPane().add(pVue2, BorderLayout.WEST);        
            this.setJMenuBar(menuBar);
        }    
    }
    Voilà ! Je ne vous donne pas les autres classes, c'est sans intéret ...

    En fait, ce sont les méthodes ouverturej et sauvegarde de la classe Fichier qui me causent problème. Le programme tourne bien... mais après une ouverture, je ne retrouve rien de ce qui est censé avoir été enregistré dans le fichier...

    Où est-ce que je me suis fourvoyé ?...
    Merci d'avance !

  2. #2
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Ta classe Placement hérite de ta classe Sudoku qui n'est pas sérialisable, du coup il me semble que tous les membres hérités de la classe Sudoku ne seront pas sérialisés. Essaye en faisant implémenter l'interface Serializable par ta classe Sudoku.
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Problème de sérialisation collection
    Par Michel Hubert dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 21/12/2006, 15h17
  2. problème de sérialisation
    Par yoyomc dans le forum Langage
    Réponses: 5
    Dernier message: 17/12/2006, 23h02
  3. Réponses: 4
    Dernier message: 12/12/2006, 10h22
  4. Problème sérialisation XML [C#]
    Par AlphonseBrown dans le forum Windows Forms
    Réponses: 4
    Dernier message: 27/04/2006, 22h58
  5. Problème de sérialisation
    Par CheryBen dans le forum Entrée/Sortie
    Réponses: 18
    Dernier message: 15/09/2005, 11h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo