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

Entrée/Sortie Java Discussion :

Serialisés et désérialisé une List<String>


Sujet :

Entrée/Sortie Java

  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Par défaut Serialisés et désérialisé une List<String>
    Bonjour,

    est-ce que quelqu'un pourrait m'indiquer comment on fait pour sérialiser ou désérialiser une List<String>

    Merci

  2. #2
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut
    Tu utilises la classe ObjectOutputStream et ObjectInputStream

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2006
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 238
    Par défaut
    Tu le fait de la meme facon que pour n'importequel autre objet...
    une list est un objet...

  4. #4
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 109
    Par défaut
    Ecriture d'un objet :
    extrait de ma librairie

    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
     
    public static boolean WriteObject(String adresse, Object O){
    		try{
    			FileOutputStream fileOut = new FileOutputStream(adresse);
    			ObjectOutputStream out = new ObjectOutputStream(fileOut);
     
    			out.writeObject(O);	
    			out.close();
    			fileOut.close();
    			return (true);
    			}
    		catch(Exception e){ 
    			e.printStackTrace();
    			return (false);}
    		}


    Lecture d'un objet :
    extrait de ma librairie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public static Object ReadObjet(String adresse){
    		try{
    			FileInputStream fileIn = new FileInputStream(adresse);
    			ObjectInputStream in = new ObjectInputStream(fileIn);
    			Object o = (Object)in.readObject();
    			return o;
    			}
    		catch (Exception e){
    			e.printStackTrace();
    			return null;
    			}
    		}

    Je te mache le boulot la

  5. #5
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut
    NotSerializableException
    L'objet que tu sérialise DefaultTableModel ou un objet auquel il fait référence, n'implémente pas l'interface serializable.

  6. #6
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut
    Tu mets quoi dans
    TableColumn ?

    TableColumn est sérializable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class TableColumn extends Object implements Serializable {
    Donc ce n'est pas la classe en elle même qui pose souci, mais les valeurs qu'elle peut contenir

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 22
    Par défaut
    Bonjour,

    Je ne sais pas si tu as tenté cette solution mais je te conseillerai de rajouter implements Serializable à ta classe Editeur.

  8. #8
    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
    Pourquoi sérialiser le model et pas uniquement les données ?

    Sérialisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Vector data = ((DefaultTableModel) table.getModel()).getDataVector();
    try {
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("sauve.tmp")); 
        try {
            oos.writeObject(data);
         } finally {
            oos.close();
         }
    } catch (IOException ioe) { 
        ioe.printStackTrace();
    }
    Désérialisation :
    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
    try {
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("sauve.tmp"));
        try {
             Vector data = (Vector) ois.readObject();
             Vector columnIdentifiers = new Vector();
             columnIdentifiers.add("Lundi");
             columnIdentifiers.add("Mardi");
             columnIdentifiers.add("Mercredi");
             columnIdentifiers.add("Jeudi");
             columnIdentifiers.add("Vendredi");
             columnIdentifiers.add("Samedi");
             columnIdentifiers.add("Dimanche");
             ((DefaultTableModel) table.getModel()).setDataVector(data, columnIdentifiers);
        } finally {
            ois.close();
        }
    } catch(IOException ioe) {
        ioe.printStackTrace();
    }
    PS : N'oubliez pas de bien fermer vos flux dans des bloc finally.
    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

  9. #9
    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
    Tu n'as pas initialisé la table.
    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

  10. #10
    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
    Pour le warning
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ClasseTest.java:10: warning: [serial] serializable class ClasseTest has no definition of serialVersionUID
    public class ClasseTest extends JFrame implements Serializable
           ^
    Ta classe ClasseTest doit définir l'attribut serialVersionUID.


    Pour le warning
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ClasseTest.java:28: warning: [unchecked] unchecked cast
    found   : java.lang.Object
    required: java.util.Vector<java.lang.String>
                                Vector<String> data = (Vector<String>) ois.readObject();
                                                                                     ^
    cela vient du fait que tu cast vers un type utilisant les génériques (Vector<String>).
    Solution dans ce sujet [generics] unchecked après un casting.


    Pour le warning
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     ClasseTest.java:117: warning: [unchecked] unchecked conversion
    found   : java.util.Vector
    required: java.util.Vector<java.lang.String>
            Vector<String> data = ((DefaultTableModel) table.getModel()).getDataVector();
                                                                                      ^
    cela vient du fait que tu assignes un Vector qui n'utilise pas les génériques (celui renvoyé par la méthode getDataVector()) à un Vector qui lui les utilise (le Vector<String> data).
    Solution la même que précédement
    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. [ArrayList] contains() sur une liste de String
    Par nicotine002 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 18/01/2008, 19h19
  2. affichage d'une list de String
    Par ganga dans le forum iReport
    Réponses: 1
    Dernier message: 27/11/2007, 10h01
  3. récupérer la partie commune d'une liste de String
    Par Kanter dans le forum Delphi
    Réponses: 11
    Dernier message: 18/04/2007, 12h46
  4. Réponses: 23
    Dernier message: 08/06/2006, 15h06
  5. Comparaison d'une liste de string à un string
    Par maxazac dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 19/10/2005, 15h39

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