Utilisation de la sérialisation

Soyez le premier à donner votre avis sur cette source.

Vue 3 827 fois - Téléchargée 347 fois

Description

Cette source donne un exemple de l'utilisation de la sérialisation. J'utilise une classe simple TauxTva qui ne contient qu'un seul attribut : la valeur de ce taux.

Le zip contient la classe TauxTva, la clase SerialiserListeTaux qui permet de serialiser et desérialiser une liste de taux de tva. Le zip contient également deux lanceurs permettent d'appeler les différentes fonctions de la classe SerialiserListeTaux.

La source ne contient que la classe SerialiserListeTaux.

Source / Exemple :


 
package fr.julien.exserialisation;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.List;

/**
 * <b>Cette classe permet de gerer la serialisation et la deserialisation d'un taux de tva.</b>
 * <p>
 * C'est un singleton
 * </p>
 * 
 * @author Julien
 * @version 1.0
 *
 */
public class SerializerListeTauxTva {

    /**
     * L'unique instance du singleton
     */
    private static final SerializerListeTauxTva instance = new SerializerListeTauxTva();
    
    /**
     * Lee fichier dans lequel on enregistre les taux de tva
     */
    private final String cheminFichierSauvegarde = "C:\\tva.txt";

    /**
     * Constructeur prive du singleton
     */
    private SerializerListeTauxTva() {
        super();
    }

    /**
     * Methode qui permet d'enregistrer la liste des taux de tva
     * @param taux
     *     Les taux a enregistrer
     */
    public void serialiser(List<TauxTva> taux){
        FileOutputStream fichier=null;
        ObjectOutputStream oos=null;
        try {
            fichier = new FileOutputStream(cheminFichierSauvegarde);
            oos = new ObjectOutputStream(fichier);
            oos.writeObject(taux);
            oos.flush();
        } 
        catch (FileNotFoundException e) {
            e.printStackTrace();
        } 
        catch (IOException e) {
            e.printStackTrace();
        }
        finally {
            try {
                if(oos!=null){
                    oos.close();
                }
                if(fichier!=null){
                    fichier.close();
                }
            }
            catch (IOException e) {
                e.printStackTrace();
            }
        }

    }

    /**
     * Methode qui permet de reconstituer la liste des taux de tva
     * @return la liste des taux de tva precedemment enregistres
     */
    @SuppressWarnings("unchecked")
    public List<TauxTva> deserialiser(){
        List<TauxTva> res = null;
        try {
            FileInputStream fichier = new FileInputStream(cheminFichierSauvegarde);
            ObjectInputStream ois = new ObjectInputStream(fichier);
            res = (List<TauxTva>) ois.readObject();
        }
        catch (java.io.IOException e) {
            e.printStackTrace();
        }
        catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return res;
    }

    /**
     * Methode d'acces a l'unique instance de la classe
     * @return l'instance de SerialiserListeTaux
     */
    public static SerializerListeTauxTva getInstance() {
        return instance;
    }



}

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Julien39
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
250 -
Et j'oubliais : merci pour ton commentaire GodConan
cs_Julien39
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
250 -
Oui, c'est vrai même si pour cet exemple, je ne vois pas tellement ce que j'aurais pu inventer pour utiliser transient.

Pour ceux qui se demanderaient ce que c'est, le mot clé transient est utilisé lorsqu'on veut empêcher la sérialisation d'une variable d'une classe (par exemple un mot de passe).
cs_GodConan
Messages postés
2116
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
9 -
Yo ;o)
pour que l exemple soit complet ;o) il faudrait introduire un attribut 'transient' ;o) ...
avec un petit commentaire ;o) ...

good

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.