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 :

Problème lecture fichier binaire


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 21
    Points : 10
    Points
    10
    Par défaut Problème lecture fichier binaire
    Bonjour,

    Voila j'essaye de lire les données d'un fichier binaire que j'ai créé auparavant et de stocker les données récupérée dans une ArrayList.
    Les données enregistrées dans le fichier son des objets que j'ai créé. Mais lorsque plusieurs objets sont enregistrées dans le fichier une exception se produit lorsque "readObject()" dépasse le premier enregistrement mon application m'envoie une exception que je ne comprend pas ^^.
    Si quelqu'un pourrait m'aider .

    Voici l'exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    java.io.StreamCorruptedException: invalid type code: AC
    	at java.io.ObjectInputStream.readObject0(Unknown Source)
    	at java.io.ObjectInputStream.readObject(Unknown Source)
    	at donnees.ProduitRegAmaigr.listeProduit(ProduitRegAmaigr.java:57)
    	at donnees.test.main(test.java:12)
    Et voici le code de la fonction :
    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
     
    public static ArrayList<ProduitRegAmaigr> listeProduit(String filename)
    	{
    		ArrayList<ProduitRegAmaigr> liste = new ArrayList<ProduitRegAmaigr>();
    		ObjectInputStream obj;
    		ProduitRegAmaigr pr;
    		try
    		{
    			obj = new ObjectInputStream(new FileInputStream(filename));
    			while(true)
    			{				
    				pr = (ProduitRegAmaigr)obj.readObject();
    				liste.add(pr);
    			}			
    		}
    		catch(FileNotFoundException notF)
    		{
    			erreur = notF;
    		}
    		catch(EOFException eof)
    		{
    			erreur = eof;		
    		}
    		catch(Exception e)
    		{
    			erreur = e;
    			e.printStackTrace();
    		}
     
    		return liste;
    	}
    Merci et bonne journée

  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,

    comment ce fichier binaire est-il écrit?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    Voici la méthode d'ajout dans le fichier :

    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
     
    public boolean ajoutProd(String filename)
    	{
    		try 
    		{
    			ObjectOutputStream obj = new ObjectOutputStream(new FileOutputStream(filename,true));
    			obj.writeObject(this);
    			obj.close();				
    			return true;
    		} 
    		catch (Exception e) 
    		{
    			this.erreur = e;
    			return false;
    		}	
    	}

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Points : 402
    Points
    402
    Par défaut
    tu utilise une boucle infini pour lire ton fichier!
    Je ne sais pas comment tu peux déséréaliser un nombre d'objets inconnu comme tu l'a fait, On ne peux pas détecter la fin d'un fichier avec un ObjectInputStream à moins de tomber sur une exception!
    t'aurai du sérialiser une liste directement c'est plus facile..

  5. #5
    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
    En effet, ça ne risque pas de marcher car d'un côté, tu utilises plusieurs ObjectOuputStream pour écrire et de l'autre, tu n'en utilises qu'un.

    Donc à chaque fois que tu écrit un objet, tu ajoutes les 4 octets d'en-tête (si ma mémoire est bonne) que l'InputStream ne s'attend à lire qu'une seule fois, au tout début.

    Il faut donc les mettre d'accord.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    Ok j'ai compris donc enfait a chaque ajout de produit dans le fichier j'extrait d'abord la liste, je rajoute un produit a la fin puis je recrée le fichier.
    En tout cas merci de cette réponse rapide

    Bonne fin de journée

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

Discussions similaires

  1. Probléme de lecture fichier Binaire!
    Par HadJack dans le forum C++
    Réponses: 5
    Dernier message: 05/08/2009, 17h19
  2. problème ecriture et lecture fichier binaire
    Par gonzo59 dans le forum C++
    Réponses: 5
    Dernier message: 16/04/2009, 20h02
  3. [debutant] problème lecture fichier binaire
    Par julien.63 dans le forum Langage
    Réponses: 2
    Dernier message: 23/12/2007, 22h12
  4. [SAX] Problème lecture fichier xml
    Par BernardT dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 07/07/2005, 18h11
  5. Problème lecture fichier en C++
    Par cali1983 dans le forum C++
    Réponses: 17
    Dernier message: 20/05/2005, 09h36

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