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

Persistance des données Java Discussion :

Ajouter des objets dans un fichier deja existant


Sujet :

Persistance des données Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 37
    Points : 30
    Points
    30
    Par défaut Ajouter des objets dans un fichier deja existant
    Bonjour


    y'a t'il possibilité d'ajouter des objets dans un fichier déja existant sans pour autant écraser ce fichier

    Merci d'avance

    Sami Chine

  2. #2
    Membre confirmé
    Homme Profil pro
    Ed Nat
    Inscrit en
    Janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ed Nat
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 325
    Points : 559
    Points
    559
    Par défaut
    Bonjour,
    s'il s'agit de sérialisation, binaire par exemple,
    c'est possible, mais il faut dans ce cas créer une classe dérivée de ObjectOutputStream pour éviter qu'à chaque ajout d'un objet dans le flux, la partie header soit insérée.
    Il ne faut en effet qu'un seul Header par fichier, faute de quoi on obtient une exception de type java.io.StreamCorruptedException.

    Classe dérivée gérant l'ajout d'objets dans le flux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class AppendObjectOutputStream extends ObjectOutputStream {
     
    	public AppendObjectOutputStream (OutputStream out) {
    		super(out);
    	}
     
    	@Override
    	protected void writeStreamHeader() throws IOException {
    		//Pas de header et reset du Stream
    		reset();
    	}
    }
    Cette classe n'est utilisable que pour ajouter des objets dans un flux existant, il faut donc tester l'existance du fichier de sérialisation, s'en servir si il existe, et sinon utiliser ObjectOutputStream :

    Exemple de méthode pour sérialiser un objet obj dans un fichier de nom fileName
    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
     
    public void write(Object obj, String fileName){
    	FileOutputStream fos=null;
    	ObjectOutputStream oos=null;
    	File f = new File(fileName);
     
    	if(f.exists()){
    		//ouverture du FileOutputStream avec append à vrai pour écriture en fin de fichier
    		FileOutputStream fos = new FileOutputStream(fileName,true);
    		//On utilise AppendObjectOutputStream pour ne pas avoir le header
    		ObjectOutputStream oos = new AppendObjectOutputStream(fos);
    	}
    	else{
    		FileOutputStream fos = new FileOutputStream(fileName);
    		ObjectOutputStream oos = new ObjectOutputStream(fos);
    	}
    	try {
    		oos.writeObject(obj);
    		oos.flush();
    	} finally {
    		oos.close();
    		fos.close();
    	}
    }

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

Discussions similaires

  1. Ajouter des données dans un fichier existant
    Par galeobdolon dans le forum MATLAB
    Réponses: 0
    Dernier message: 23/06/2014, 10h24
  2. Réponses: 5
    Dernier message: 23/04/2010, 21h26
  3. Réponses: 4
    Dernier message: 14/05/2007, 10h50
  4. ajouter des .jar dans les fichiers de config
    Par C_C dans le forum NetBeans
    Réponses: 5
    Dernier message: 17/11/2006, 15h20
  5. Existe il un moyen d'ajouter des commentaire dans un fichier
    Par Edoxituz dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 21/01/2006, 12h31

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