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

Java Discussion :

Lire un fichier de vecteur serialisé


Sujet :

Java

  1. #1
    Membre confirmé Avatar de alexorcet
    Inscrit en
    Mai 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 86
    Par défaut Lire un fichier de vecteur serialisé
    Bonjour

    j'ai un fichier qui contient des objets serialisé de type vector.
    je souhaiterai lire ce fichier et affichier le contenu de chaque vecteur.mais le probleme c'est que je ne sais pas combien de vecteur serialisé contient ce dernier.
    j'ai essayé avec cette méthode:
    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
    32
      public void readFichierSer(String nomfich)
          { 
          	  
              try
    			    {
                                    Enumeration enume;
    			        Vector vectLu = new Vector();
                                    Vector allElements = new Vector();
    			        FileInputStream fis = new FileInputStream(path+nomfich+".ser");
    			        ObjectInputStream obis = new ObjectInputStream(fis);
    			        
    			        for(int i=0;i<2;i++)
                                    {
    			        vectLu= (Vector)obis.readObject();
    			        allElements.add(vectLu);
                                    }
                                    
    			        for(enume = allElements.elements();enume.hasMoreElements();)
    			        {
    			            System.out.println(enume.nextElement());                                   
    			        }
    
    			    }
    			        catch(ClassNotFoundException e)
    			        {
    			            System.err.println("Erreur"+e);
    			        }       
    			        catch(IOException e)
    			        {
    			            System.err.println("Erreur"+e);
    			        }
          }
    mais le probleme est que ma boucle se fait sans connaitre combien de vecteur il y a dedans.
    est ce que qlqn voit comment je pourrai determiner ce nombre???

  2. #2
    Expert éminent
    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
    Par défaut
    la javadoc de readobject n'est pas très claire sur ce qui se passe quand on est à la fin du stream. Je te conseille donc de changer ton for(....) en while(true), d'entourer le tout par un try/catch (des fois que readobject lance une exception à la fin du stream) et de tester la sortie de readobject pour les valeur null (des fois que readobject renverrait un null en fin de stream). Sans tester, je "suppose" qu'il va lancer un IOException acec un message style end of file.

  3. #3
    Membre confirmé Avatar de alexorcet
    Inscrit en
    Mai 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 86
    Par défaut
    Bonjour à tous

    voila j'ai testé ta solution et voici le code:
    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
    32
    try
    			    {
                                    Enumeration enume;
    			        Vector vectLu = new Vector();
                                    Vector allElements = new Vector();
    			        FileInputStream fis = new FileInputStream(path+nomfich+".ser");
    			        ObjectInputStream obis = new ObjectInputStream(fis);
     
    			        //for(int i=0;i<2;i++)
                                    while(true)
                                    {
    			        vectLu= (Vector)obis.readObject();
    			        allElements.add(vectLu);
     
     
    			        for(enume = allElements.elements();enume.hasMoreElements();)
    			        {
    			            System.out.println(enume.nextElement());                                   
    			        }
     
                                    }
     
    			    }
    			        catch(ClassNotFoundException e)
    			        {
    			            System.err.println("Erreur"+e);
    			        }       
    			        catch(IOException e)
    			        {
    			            System.err.println("Erreur"+e);
    			        }
          }
    et effectivement il me lance une Erreurjava.io.EOFException
    est ce qu'il n'y a pas moyen de faire while(fin du fichier)????

  4. #4
    Expert éminent
    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
    Par défaut
    utilise simplement le catch sur le EOF pour arrêter ta lecture:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    try{
     while (true){
      //... ton code actuel
     }
    catch (EOFException e){
      // fin de fichier; rien de particulier, on est sorti de la boucle.
    }
    // on a fini de lire

  5. #5
    Membre confirmé Avatar de alexorcet
    Inscrit en
    Mai 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 86
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    utilise simplement le catch sur le EOF pour arrêter ta lecture:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    try{
     while (true){
      //... ton code actuel
     }
    catch (EOFException e){
      // fin de fichier; rien de particulier, on est sorti de la boucle.
    }
    // on a fini de lire
    youpiiiiiiiiiiiiiiiiiiii ça marche
    t'es un bon tchize merci bcp

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 220
    Par défaut
    slt,
    svp est ce que je peux savoir à quoi ressemble un fichier serialisé ?
    j ai fait un program pareil mais j ai pas le fichier pour tester

  7. #7
    Expert éminent
    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
    Par défaut
    Ben, tu crée un ObjectOutputStream, tu tappe des objets dedans à ton goût, tu fait un close et t'aura un de ces fichiers

  8. #8
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 220
    Par défaut
    merci
    pour moi il lance l exception :

    Erreurjava.io.OptionalDataException

    au niveau de la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    vectLu= (Vector) obis.readObject();

  9. #9
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 220
    Par défaut
    Solution simple & intelligente ...

    tchize ..

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/11/2014, 17h04
  2. lire des fichiers vecteurs
    Par GeoSouth dans le forum C++
    Réponses: 10
    Dernier message: 05/12/2007, 17h28
  3. Réponses: 14
    Dernier message: 28/07/2006, 10h20
  4. Lire un fichier de 50 gb
    Par Maryves dans le forum MFC
    Réponses: 2
    Dernier message: 08/01/2004, 14h08
  5. Lire le fichier du port série
    Par saibe dans le forum Linux
    Réponses: 7
    Dernier message: 09/04/2003, 09h29

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