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 :

Ecrire et lire des données d'une classe


Sujet :

Entrée/Sortie Java

  1. #1
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 341
    Points : 1 577
    Points
    1 577
    Par défaut Ecrire et lire des données d'une classe
    Bonjour,

    comment faire pour:
    * sauvegarder dans un fichier, les données membres d'une classe contenant par exemple des int, long... et ArrayList
    * récupérer ces données et les remettre dans des int, long... et ArrayList

    Beaucoup de post traitent de la lecture ou sauvegarde d'un fichier texte... mais quand on a un mélange de données...

    Merci & @ +

  2. #2
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Bonjour,

    Quel est ton but exactement?
    A priori, je t'orienterais sur la sérialisation. Pour sauvegarder une instance, c'est encore ce qu'il se fait de mieux.

  3. #3
    Membre éclairé Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Points : 676
    Points
    676
    Par défaut
    Bonjour,

    pour ce que j'en ai compris il semble que la serialization soit la solution.

    Sinon tu peu ecrire/lire des type primitif via DataOutputStream/DataInputStream

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Deaf Voir le message
    Pour sauvegarder une instance, c'est encore ce qu'il se fait de mieux.
    C'est surtout ce qu'il y a de plus simple à mettre en place...

    Par contre le fichier n'est pas "lisible" et il faut faire attention à bien gérer l'évolution des classes sous peine de se retrouver avec un tas d'erreur...

    Une sauvegarde XML via XMLEncoder/XMLDecoder peut s'avérer plus approprié (le fichier reste lisible par un humain, et éventuellement traitable par d'autres programmes).

    Un format spécifique bien approprié pourrait également s'avérer avantageux...


    a++

  5. #5
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 341
    Points : 1 577
    Points
    1 577
    Par défaut
    Bonjour,

    alors en ce qui concerne la sérialisation... nous avons déjà eu une discussion là-dessus: http://www.developpez.net/forums/d88...isation-swing/
    Je pense que cela ne poserais pas de problème dans la mesure où ce n'est pas un objet Swing que je sauvegarderais... mais... mais ma classe qui gère mes données en fait partie... (Reprenez-moi si ce que j'écris n'est pas juste).

    Voici le début de code de ma classe de gestion:
    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
     
    public class CTableDonnees extends AbstractTableModel
    {
      private static final long serialVersionUID = 1L;
     
      private static final int INSERTION = 1;
      private static final int MODIFICATION = 2;
      private static final int SUPPRESSION = 4;
     
     
      // MEMBRES:
      private final List<CLigneOperation> m_Operations = new ArrayList<CLigneOperation>();
      private static long m_solde_init = 0;
      private static byte m_nbColonnes = 0;
      private static byte m_nbChamps = 0;
      private static boolean m_modification = false;
    /.../
    Vous pouvez constater que cette classe étend AbstractTableModel, pour laquelle il y a cette fameuse mise en garde dans la doc de SUN: Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeansTM has been added to the java.beans package.

    Ce qui m'intéresserais, c'est la sauvegarde de ma liste List<CLigneOperation> m_Operations, et les autres membres.
    S'il n'y avait que l'ArrayList, je pense que ce serait facile, mais tout l'ensemble de ces données disparates...coment faire ?

    @ bientôt...

  6. #6
    Membre éclairé Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Points : 676
    Points
    676
    Par défaut
    dans ce cas tu peu juste ecrire les chose que tu veux via un ObjectoutputStream sur un fichier qui va ecrire seuleemnt les chose dont tu a besoin (ou via l'interface Externalizable en lieu et place de serializable)

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    une autre option est d'encapsuler tes donnée dans un java bean simple (qui n'étends pas abstract model) et pour ce qui est du modèlme, tu fait juste un modèle qui utilise une instance unique de ton bean. Et c'est le bean que tu serialise:

    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
    public class CTableDonnees extends AbstractTableModel
    {
      private static final long serialVersionUID = 1L;
     
      private static final int INSERTION = 1;
      private static final int MODIFICATION = 2;
      private static final int SUPPRESSION = 4;
     
      public static class Datas {
        // MEMBRES:
        protected final List<CLigneOperation> m_Operations = new ArrayList<CLigneOperation>();
      }
      Datas datas = new Datas();
        protected static long m_solde_init = 0;
        protected static byte m_nbColonnes = 0;
        protected static byte m_nbChamps = 0;
        protected static boolean m_modification = false;
    /.../
    datas.m_Operations.get(...);
    /.../

  8. #8
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 341
    Points : 1 577
    Points
    1 577
    Par défaut
    OK, merci pou votre aide.
    J'ai suivi vos conseils et j'ai réussi la sérialisation de différents type de données en les mettant dans une classe regroupant celles-ci.
    J'évite ainsi l'éventuel problème d'incompatibilité avec les futures versions Swing.

    @+

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

Discussions similaires

  1. [SQL-Server] Ecrire et lire des données Unicode dans MSSQL 2005
    Par kaboume dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 30/09/2010, 09h27
  2. Sauver Lire des données d'une classe
    Par toss.net dans le forum C#
    Réponses: 2
    Dernier message: 25/07/2010, 19h06
  3. Réponses: 4
    Dernier message: 19/02/2008, 01h24
  4. Chargement des données d'une classe vers une autre
    Par nosdev dans le forum Access
    Réponses: 1
    Dernier message: 16/01/2007, 15h44
  5. Réponses: 8
    Dernier message: 04/04/2006, 18h29

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