Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Serialisation sans écraser des données [ Algorithme / Autre ] (ddrstyle)

mercredi 2 janvier 2008 à 19:27:36 | Serialisation sans écraser des données

ddrstyle

  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();
                }

--------------------------------------------------------------------------------

jeudi 17 janvier 2008 à 11:24:33 | Re : Serialisation sans écraser des données

forcels

Réponse acceptée !
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


jeudi 17 janvier 2008 à 14:34:52 | Re : Serialisation sans écraser des données

ddrstyle

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



Cette discussion est classé dans : liste, tf, jtextfield, joueur, gettext


Répondre à ce message

Sujets en rapport avec ce message

requete sql et JTextfield [ par abdouinfomiage ] slt less amis, s'il vous plait j besoin de votre aide conçernant une requte sql d'ajout : public void ajout()    {     try      {  &nbsp getText = probleme !!! [ par niko29940242 ] salut all, j'ai un pti probleme : j'utilise une petite interface graphique avec des entrées de texte utilisateur :public class test { JTextField n JTextField [ par cid019 ] Bnojour,voila j'ai un probleme avec mon JTextField. Je teste s'il est vide et auquel cas j'affiche un message d'erreur.Le probleme c'est que meme lors Problème de focus [ par mouss11 ] J'ai créé une JDialog avec plusieurs champs JTextField, des JLabel, JComboBox, etc.Quand ma fenêtre apparait, j'aimerai que ce soit mon premier JTextF liste des valeur des parametres de l'URL [ par fredmorvant29 ] bonjour, je récupere mes associations clé-valeurs ds une map a laide de request.getParameterMap() et je place ensuite les valeurs dans une colection parser xml [ par fredmorvant29 ] bonjour je veu parser un flux xml pour en retirer les info sous forme de liste.ex: toto 10</p Liste des tables d'oracle... [ par cdryk ] Mon code :connect = DriverManager.getConnection(url,login,pass);metadata = connect.getMetaData();res = metadata.getTables("nom_base", null, null, null Othello et fonction d'évaluation [ par gouigoui ] Salut à tousDans le cadre de mes études, je fais un peu mumuse avec le jeu othello. J'ai implémenté un joueur, avec un algorithme de recherche de type Invalider la saisie de quote dans un JTextField [ par srx ] Bonjour,j'aurais besoin de savoir comment on peut faire pour que lorsque l'on saisie une quote (') dans un JTextField, celle-ci ne soit pas affichée d JList [ par cid019 ] bonjour,j'ai un probleme d'evenement avec ma liste:public void valueChanged(ListSelectionEvent e) { if (e.getSource() == l.getListe()) { for (int


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,217 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.