Serialisation sans écraser des données [Résolu]

ddrstyle 2 Messages postés samedi 27 octobre 2007Date d'inscription 17 janvier 2008 Dernière intervention - 2 janv. 2008 à 19:27 - Dernière réponse : ddrstyle 2 Messages postés samedi 27 octobre 2007Date d'inscription 17 janvier 2008 Dernière intervention
- 17 janv. 2008 à 14:34
  Bonjour à tous,

  Alors voilà, j'ai une petite question en ce qui concerne la sérialisation en Java. Je dois stocker (dans un ArrayList) les nom, prénom, pseudo... d'un joueur, puis sérialiser cette liste. Jusque là tout va bien. Car j'ai créé une fenêtre d'Inscription puis une fenêtre de Connexion (qui vérifie le pseudo et le mot de passe entrés avec la liste sérialisée préalablement). Sauf que ceci ne marche qu'avec un joueur, en effet si je créer un nouveau joueur la sérialisation à lieu mais écrase le fichier précèdent.
  Je souhaiterai donc savoir comment faire pour stocker tous les détails de chaque joueur dans le même fichier, ou créer un "Sauvegarde.ser" par joueur. Merci .

cf le code:

--------------------------------------------------------------------------------
    ArrayList liste = new ArrayList(6);
    JTextField Tf_i_Nom;
    JTextField Tf_i_Prenom;
    JTextField Tf_i_Pseudo;
    JTextField Tf_i_MotdePasse;
    JTextField Tf_i_ConfirmationMotdePasse;
    JTextField Tf_i_Credit;

if ((Tf_i_MotdePasse.getText()).equals(Tf_i_ConfirmationMotdePasse.getText()))
        {
            int credit_conversionInscription= Integer.parseInt(Tf_i_Credit.getText());
            Inscription joueur = new   Inscription(Tf_i_Nom.getText(),Tf_i_Prenom.getText(),Tf_i_Pseudo.getText(),Tf_i_MotdePasse.getText(),Tf_i_ConfirmationMotdePasse.getText(),credit_conversionInscription,true);
           
            if(credit_conversionInscription<=10000)
            {
                inscrit = true;

                liste.add(joueur.getNomInscription());
                liste.add(joueur.getPrenomInscription());
                liste.add(joueur.getPseudoInscription());
                liste.add(joueur.getMotDePasseInscription());
                liste.add(joueur.getConfirmationInscription());
                liste.add(joueur.getCreditInscription());
           
                try
                {
                    FileOutputStream fichier = new FileOutputStream("Sauvegarde_joueur.ser");
                    ObjectOutputStream oos = new ObjectOutputStream(fichier);
                    oos.writeObject(liste);
                    oos.flush();
                }
                catch (java.io.IOException io)
                {
                    io.printStackTrace();
                }

--------------------------------------------------------------------------------
Afficher la suite 

Votre réponse

2 réponses

forcels 64 Messages postés mercredi 10 mai 2006Date d'inscription 27 août 2010 Dernière intervention - 17 janv. 2008 à 11:24
+3
Utile
Hello,

Si tu a déjà un fichier existant, ce qu'il faut faire c'est lire le contenu de ton fichier par la programmation (getInputStream()), le sauvegarder dans une variable, ajouter ton nouveau joueur à la variable, et  la remettre dans le fichier. Ainsi, tu gardes toutes tes données...

Bon si ton arrayList devient très grande, ça risque de faire ralentir ton application... Donc ta solution de faire plusieurs fichiers peut aussi être envisageable. Bon après c'est un peu plus embêtant pour faire une recherche pour tester les logins, mais c'est tout à fait possible.
En connaissant exactement quels fichiers tu dois lire (par exemple tu les mets dans un dossier spécifique), tu fais une boucle dans le dossier et tant qu'il trouve un fichier, il le lit et vérifie le login... Perso je n'ai jamais testé mais je pense que ça peut être possible... Question temps, je pense que c'est plus lent de faire ainsi que de travailler avec un seul fichier. Donc à tester!

Perso je ferais avec l'arrayList en mettant tout dans un fichier. Cette
solution me semble beaucoup plus simple à implémenter que l'autre...

Voila j'espère que j'ai pu t'éclairer un peu :)

forcels
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de forcels
ddrstyle 2 Messages postés samedi 27 octobre 2007Date d'inscription 17 janvier 2008 Dernière intervention - 17 janv. 2008 à 14:34
0
Utile
Merci ! J'ai opté pour la solution avec un fichier unique de sauvegarde. En effet, je lis le contenu du fichier puis ajoute à la suite les données d'un autre joueur puis re-sérialise le tout. Méthode efficace pour un nombre pas trop important de joueurs.

Merci encore pour ta réponse.

ddr-style
Commenter la réponse de ddrstyle

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.