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

Java Discussion :

[Stratégie]Sauvegarde d'une liste chainée dans un fichier


Sujet :

Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 266
    Points : 113
    Points
    113
    Par défaut [Stratégie]Sauvegarde d'une liste chainée dans un fichier
    Votre mission, si vous l'acceptez, est de trouver un moyen de sauvegarder une liste chainée ou chaque cellule contient plusieurs champs textes. Ainsi que de pouvoir faire l'operation inverse, cad pouvoir les replacer directement dans une liste chainée

    Merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 169
    Points : 113
    Points
    113
    Par défaut
    heu, à part afficher tous les champs de texte de chaque cellule, séparés par une tabulation, sur une ligne, je vois pas comment.
    Mais si jamais tu trouves un moyen sympas et rapide, ça m'interresse grandement.

  3. #3
    NGY
    NGY est déconnecté
    Membre habitué
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 137
    Points : 164
    Points
    164
    Par défaut
    C'est simple comme bonjour.
    Commence, et on t'aidera à finaliser si tu bloques.

    Questions : Sous quelle forme est stockée la liste chainée ? Que contiennent les "cellules" ? Quel est le format que doit avoir le fichier où sont sauvées les données ?...

  4. #4
    Membre éclairé Avatar de Spoutnik
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 672
    Points : 781
    Points
    781
    Par défaut
    Salut,

    je voudrais pas dire de conneries, mais une sérialisation ca ne ferai pas ca ?
    Two beer or not two beer. (Shakesbeer)
    Question technique par MP => poubelle!

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 266
    Points : 113
    Points
    113
    Par défaut format
    voici ma liste chainée : private LinkedList list = new LinkedList();
    j'aimerai stocker ca dans un fichier texte banal. le truc c'est que ma liste chainée contient des cellules de chaines de caractères et donc je ne vois pas trop comment le mettre dans le fichier texte afin de pouvoir les ressortir facilement (sans melanger les differentes chaines qui se suivent)

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 169
    Points : 113
    Points
    113
    Par défaut
    le nombre de champs de tes cellule est évolutif, ou alors il est défini et fixe pour la vie ?
    Et quel est la longueur de ta liste, en moyenne ?

  7. #7
    Membre éclairé Avatar de Spoutnik
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 672
    Points : 781
    Points
    781
    Par défaut Re: format
    Citation Envoyé par BernardT
    ma liste chainée contient des cellules de chaines de caractères
    Des cellules? c'est à dire? des attributs? des champs String?
    Si c'est bien ca, fait une recherche sur "serializable" tu devrais trouver ton bonheur, au pire voir sur "externalizable" si tu dois redefinir toi même la méthode d'exportation.
    Regarde la faq java aussi, y a pleins de choses

    ++
    Two beer or not two beer. (Shakesbeer)
    Question technique par MP => poubelle!

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 266
    Points : 113
    Points
    113
    Par défaut taille de cellule
    ma cellule contient des chaine de caractere de longueur non définie, des entier, des booleens.. Je vais aller jeter un ptit coup d'oeil sur ce que vous m'avez deja envoyé

  9. #9
    NGY
    NGY est déconnecté
    Membre habitué
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 137
    Points : 164
    Points
    164
    Par défaut
    Attention, si tu sérialises, tu n'auras pas un fichier texte !

    Citation Envoyé par BernardT
    ma cellule contient des chaine de caractere de longueur non définie, des entier, des booleens..
    Tu peux préciser ce que tu appelles les "cellules" de ta Liste ? OK ce sont différents types, mais comment sont-ils stockés ???
    • Chaque cellule est elle-même une Liste ?
      Elles sont stockées sous forme de String, mais alors dans ce cas, comment sais-tu si ce sont des entiers, booléens, ... et combien ils y en a ?
      Ou alors chaque "cellule" est en fait un objet ?

    Enfin, c'est le brouillard ton histoire de cellules.
    Explique-nous clairement la problématique. Une fois que ce sera bien ennoncé, la solution viendra peut-être toute seule (optimiste pour un Lundi non ?).

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 266
    Points : 113
    Points
    113
    Par défaut
    j'avoue pour un lundi matin on se prend deja pas mal la tete....
    en fait c'est un objet, voici un element de ma liste chainée

    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
    public class Cell 
    {
    	public String blockID = null;
     
    	//Titles content
    	public String level = null;
    	public String title1 = null;
    	public String title2 = null;
    	public String title3 = null;
    	public String title4 = null;
    	public String title5 = null;
     
    	public int questionType = 0;
     
    	// Text questions content
    	public String subheading1 = null;
    	public String subheading2 = null;
    	public String conclusion = "false";
     
    	// Block content
    	public String questionNumber = null;
    	public String questionMainText = null;
    	public String optionalExplanation = null;
    	public String note = null;
     
    	// Navigation questions content
    	public String navigationreply1 = null;
    	public String navigationreply2 = null;
    	public String target1 = null;
    	public String target2 = null;
     
    	// Rating questions content
    	public int numberOfReplies = 0;
    	public String[] ratingReplies;
     
    	public String nextB = null;
     
    	//Answers
    	public String answer = null;
    	public String justification = null;
    	public String rating_answer=null;
    	public  String navigation = null;
     
    }
    je l'ai declarée comme : private LinkedList list = new LinkedList();

    parmi mes recherches je me suis apperçu qu'on pouvait meme mettre une JFrame en sauvegarde ce qui permettait de reouvrir la fenetre, la j'avoue que c'est aussi assez chaud à gerer mais ca a l'air pas mal...


  11. #11
    NGY
    NGY est déconnecté
    Membre habitué
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 137
    Points : 164
    Points
    164
    Par défaut
    Ah ! En fait ta structure est une liste d'éléments Cell, donc on connait le nombre et le type d'éléments.

    Voilà rapidement comment je vois le truc. Pour écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Cell cell = null;
    Iterator it = laListe.iteraor();
    while(it.hasNext) {
      cell = (Cell) it.next();
      unFlux.println(cell.encodeFichier());  // Ecrire dans le fichier
    }
    Et tu écris une méthode encodeFichier() de la classe Cell qui formatte les attributs de ton objet selon un format qui va bien, par exemple chaque séparé par des tabulations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    private final String SEPARATEUR = "\t";
    ...
    public String encodeFichier() {
      StringBuffer sb = new StringBuffer(); // On peut optimiser en calculant la taille de la chaîne finale
      sb.append(blockID).append(SEPARATEUR);
      sb.append(level).append(SEPARATEUR);
      sb.append(level1).append(SEPARATEUR);
      ...
      sb.append(navigation);
     
      return sb.toString();
    }
    Pour la lecture, tu fais une méthode decodeFichier() qui retourne un objet à partir d'une ligne au format décrit ci-dessus, en utilisant des fonctions de découpage (style split() ou StringTokenizer).

  12. #12
    Membre éclairé Avatar de Spoutnik
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 672
    Points : 781
    Points
    781
    Par défaut
    BernardT -> une autre question, quand tu dis stocker dans un fichier texte, tu parles d'un fichier avec du texte lisible par un etre humain, ou uniquement un support de sauvegarde pour que le programe puisse reconstituer les données?
    Two beer or not two beer. (Shakesbeer)
    Question technique par MP => poubelle!

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 266
    Points : 113
    Points
    113
    Par défaut
    je souhaite juste un support pour pouvoir sauvegarder, il n'est pas necessaire que celui ci soit lisible par l'utilisateur

    merci NGY, je vais essayer de tester ca grandeur nature!!!

  14. #14
    NGY
    NGY est déconnecté
    Membre habitué
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 137
    Points : 164
    Points
    164
    Par défaut
    Citation Envoyé par BernardT
    je souhaite juste un support pour pouvoir sauvegarder, il n'est pas necessaire que celui ci soit lisible par l'utilisateur

    merci NGY, je vais essayer de tester ca grandeur nature!!!
    Tu vas me trouver bidon, mais si c'est pas nécessaire de pouvoir lire le fichier, la sérialisation peut être intéressante (mais je ne pourrai pas t'en dire beaucoup plus).
    Sinon, la solution XML pourrait être à envisager aussi. Ca se prête bien à ce cas.

    Pour ces 2 solutions, voir si la mise en oeuvre est plus simple que ce que je t'ai dis plus haut.

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 266
    Points : 113
    Points
    113
    Par défaut THE END !!!
    Merci a tous, j'ai enfin réussi, le mieux était en effet avec les serialisations, tout est extrêmement bien expliqué dans les cours et tutoriels pour apprendre Java : http://java.developpez.com/cours/

    Il n'y a qu'a mettre la liste en tant qu'objet dans un fichier .ser, et on peut la reextrere d'un coup, sans meme passer par les differentes cellules qui la composent.
    apparement il y a meme moyen de gerer les sauvegardes de fenetre en tant qu'objet...en gros c fou !!!

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 169
    Points : 113
    Points
    113
    Par défaut
    et apparament ce doit être bien rapide de remplir une liste à partir d'un fichier .ser par rapport à sa première construction. Tu pourra nous dire si tu gagne beaucoup de temps ?

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 169
    Points : 113
    Points
    113
    Par défaut
    Et je découvre ça à la fin de mon stage !!! J'ai pas intéret à le dire à mon patron !!

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 266
    Points : 113
    Points
    113
    Par défaut
    oué c'est carement rapide, et ca evite des milliers de ligne de code, surtout dans mon cas...

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/03/2010, 15h30
  2. Afficher une liste chainée dans un text_view
    Par Gaara93 dans le forum GTK+ avec C & C++
    Réponses: 13
    Dernier message: 21/01/2009, 17h08
  3. mapper une liste xml dans un fichier Excel.
    Par maa dans le forum Excel
    Réponses: 1
    Dernier message: 21/08/2007, 15h42
  4. Réponses: 5
    Dernier message: 25/04/2006, 09h33
  5. enregistrer une liste chainée dans un fichier?
    Par ALF-Teams dans le forum C
    Réponses: 7
    Dernier message: 08/03/2006, 18h42

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