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

Langage Java Discussion :

Lire Contenu d'un fichier


Sujet :

Langage Java

  1. #1
    Membre du Club Avatar de sisiniya
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Points : 67
    Points
    67
    Par défaut Lire Contenu d'un fichier
    Bonjour,

    Objectif : Enregister des Objets dans un fichier et Les retaurer depuis ce fichier.

    Ecriture dans le fichier:
    J'ai utillisé la méthode writeObject de la classe ObjectOutputStream pour enregister mes objets. L est un objet de la classe Livre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    FileOutputStream fout= new FileOutputStream("out.txt");
    ObjectOutputStream out= new ObjectOutputStream(fout);
    out.writeInt(L);
    out.close();
    Récupérer les livres stockés depuis le fichier:
    Dans cette phase où j'ai le problème : je n'arrive pas à réccupérer mes objets. Voilà comment je procède:
    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
     
     
    try{
                FileInputStream fis = new FileInputStream("mesEmploye.txt");
                ObjectInputStream ois = new ObjectInputStream(fis);
                List<Livre> L = new ArrayList<livre>();
     
                if(ois.available() == 0) System.out.println("0 BYTES");
     
                if(ois.read() == -1) System.out.println("viiiide");
     
                else{
                        try {
                            while(ois.available() > 0){
                                try{
                                     L.add((Livre) ois.readObject());
     
                                 }
                                 catch(ObjectStreamException ose) {}
                                 catch(ClassNotFoundException cnfe) {}
                                catch (EOFException e){}
                           }
                        }
                        finally { ois.close(); }
                }
    }catch (EOFException e){ e.getMessage(); e.printStackTrace(); }
     catch (FileNotFoundException e) {e.printStackTrace();}
     catch (java.io.IOException e) { e.printStackTrace(); }
     catch(Exception e){ e.getMessage(); e.printStackTrace();}
    il m'affiche toujours :
    0 Bytes
    Viiiiiiide
    Malgrès que le fichier a été bien alimenté.


    Merci pour vos aides.

    Sisiniya

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 25
    Points : 32
    Points
    32
    Par défaut
    Je ne comprends pas ceci :
    Si L est un Livre, ce n'est pas un int, donc ça ne doit pas compiler.

    Je n'ai pas lu la suite ...

  3. #3
    Membre du Club Avatar de sisiniya
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Points : 67
    Points
    67
    Par défaut
    pardon, oui tout à fait raison ça n'a pas de sens, c'est just une faute de copier/coller from mon code.

    je veux dire writeObject vu que L est un objet de la classe Livre.

  4. #4
    Membre du Club Avatar de sisiniya
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Points : 67
    Points
    67
    Par défaut
    En cherchant sur le Web, j'ai trouvé pas mal de personne qui ont le même problème, mais je n'arrive pas à comprendre la source de ce probème :

    Ils disent que :
    si on utilise ObjectOutputStream pour enregister nos objets, on aura un problème lors de la lecture de ces objet depuis le fichier, de telle sorte que lors de la lecture, on ne pourra lire que le premier objet qui est enregistrer dans le fichier.

    Source de problème que je n'ai pas compris :
    ils disent que à chaque fois qu'on enregistre un objet avec ObjectOutputStream, ce dernier crée un Header !!, ce qui fait qu'il va créer ce Header autant de fois qu'on fait appel à ObjectOutputStream pour enregister un autre livre

    Merci pour vos aides.


    Sisiniya.

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

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Bonjour,

    peut être un début de réponse ici: http://www.developpez.net/forums/d10...s/#post5807091

    En espérant que cela vous soit utile...

    @bientôt...
    @ bientôt...

    Salut & @+ sur 3W!

  6. #6
    Membre du Club Avatar de sisiniya
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Points : 67
    Points
    67
    Par défaut
    Merci pour le lien, je l'ai consulté, et j'ai fait la même chose.

    Pour bien cerner Le problème :

    Cas 1: Si le fichier est vide -> y a pas de problème (aucune exception n'est élevé)
    Cas 2:
    Si j'enregister un seul objet Livre dans le fichier et j'essaye par la suite de le lire depuis le fichier -> aucun problème, il m'affiche l'objet correctement
    Cas 3:
    Si j'essaye d'enregister un autre Livre dans le fichier et quand j'essaye de le lire depuis ce dernier -> Erreuuuur !!!!

    Merci encore pour vos aides.

    Sisiniya.

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

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Bonjour,

    lors de l'ajout d'un second objet, vous indiquez que lors de la lecture du fichier, vous obtenez une erreur... est-ce une exception qui est levée, et si oui, savez-vous laquelle ?

    @ bientôt...
    @ bientôt...

    Salut & @+ sur 3W!

  8. #8
    Membre du Club Avatar de sisiniya
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Points : 67
    Points
    67
    Par défaut
    je peux ajouter autant que je veux sans aucun problème. Mais, lors de la lecture et si dans mon fichier plus d'un objet qui est stocké voilà à quoi ressemble l'execution :

    il m'affiche le premier Objet correctement suivi d'une exception suivante :

    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(ObjectInputStream.java:1356)
            at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
            at projet_java.Main.readLivre(Main.java:113)
            at projet_java.Main.main(Main.java:26)

    Merci.

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

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Bonjour,
    dans votre code, essayez de forcer la vidange du flux vers le fichier par un Ainsi lors de la fermeture du flux, vous êtes certains que le flux de données a été trandféré sur le fichier...

    @ bientôt...
    @ bientôt...

    Salut & @+ sur 3W!

  10. #10
    Membre du Club Avatar de sisiniya
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Points : 67
    Points
    67
    Par défaut
    Effectivement, j'ai déjà utilisé le .flush, même pour être claire, voilà ma fonction qui enregistre mes données 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
    17
    18
    19
    20
    21
    22
    23
    24
     
    public void saveInFile(LivreE) throws IOException{
            ObjectOutputStream oos = null;
            try{
                FileOutputStream fos = new FileOutputStream("mesLivres.txt",true);
                oos = new ObjectOutputStream(fos);
                oos.writeObject(E);
                oos.reset();
                oos.flush();
                oos.close();
            }catch (java.io.IOException e){ e.printStackTrace();}
            finally {
                //Close the ObjectOutputStream
                try {
                    if (oos != null) {
                        oos.flush();
                        oos.close();
                    }
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
     
      }
    Le problème ne réside pas là, mais comme j'ai déjà mentionné, qu'en cherchant de le Web, j'ai trouvé des gens ayant même problème [Je rappelle : il m'affiche le 1er objet seulement, et lors de la lecture de 2èm objet, il génére une exception que j'ai déjà posté] (voir mon poste N°3 où j'ai parlé de Header)

    Merci encore pour vos aides.

    Sisiniya.

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

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Bonjour,

    je pense que vous oubliez aussi de fermer le fichier. Voici le code que j'utilise pour enregsitrer un objet dans un 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    // Ouverture d'un flux de sortie vers le fichier indiqué:
    FileOutputStream fOutStream = new FileOutputStream( fichierSource );
     
    // Création d'un flux "Objet" vers le flux de sortie:
    ObjectOutputStream oOutStream = new ObjectOutputStream( fOutStream );
     
    try
    {
      oOutStream.writeObject( MonObjet );
    }
    catch( IOException iOE )
    {
      Message.log( Level.INFO, "Erreur IO générale lors de l'écriture du flux " + iOE.getMessage());
    }
    finally // ...quoiqu'il arrive...
    {
      try
      {
        oOutStream.close(); // Tentative de fermeture de l'objet
      }
      finally // ...quoi qu'il arrive...
      {
        fOutStream.close(); // Fermeture du flux de sortie
      }
    }
    Dans la dernière partie, je tente de fermet l'objet, mais aussi, quoiqu'il arrive, je ferme le flux de sortie, c'est à dire le fichier.

    Enfin, il y a un truc qui me titille mais je pense que c'est une erreur de frappe:
    public void saveInFile(LivreE)
    et par la suite:
    oos.writeObject(E);
    Je suppose qu'il s'agit plutôt de oos.writeObject(LivreE);
    @ bientôt...

    Salut & @+ sur 3W!

  12. #12
    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 sisiniya Voir le message
    Le problème ne réside pas là,
    Si si ! le problème réside bien là !

    Tu ne peux pas ajouter des éléments dans un fichier avec un simple append=true lors de l'ouverture du fichier. Le format de sérialisation est plus complexe et nécessite la réécriture du fichier en entier. Si tu veux rajouter des éléments il faut réécrire tout le fichier.

    Le plus simple serait de sauvegarder un tableau ou une liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	public void saveInFile(Livre... livres) throws IOException {
    		FileOutputStream fos = new FileOutputStream("mesLivres.txt");
    		try {
    			ObjectOutputStream oos = new ObjectOutputStream(fos);
    			try {
    				oos.writeObject(livres);
    			} finally {
    				oos.close();
    			}
    		} finally {
    			fos.close();
    		}
    	}
    Car dans la méthode de lecture il faut lire autant d'objet qu'on en a écrit. En écrivant un tableau on se contente de récupérer un tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	public Livre[] readFromFile() throws IOException, ClassNotFoundException {
    		FileInputStream fis = new FileInputStream("mesLivres.txt");
    		try {
    			ObjectInputStream ois = new ObjectInputStream(fis);
    			try {
    				return (Livre[])ois.readObject();
    			} finally {
    				ois.close();
    			}
    		} finally {
    			fis.close();
    		}
    	}

    Note : attention à la gestion des fermetures : le try/finally doit suivre la déclaration de la ressource, et ne contenir que l'appel de close() !!!
    De plus tu déclares des exceptions que tu ne remontes pas, et tu te contentes de les logguer ce qui n'est pas très propre
    Enfin il ne faut surtout pas se baser sur available(). La valeur retournée n'est là qu'à titre indicatif et ne garantie rien !!!

    a++

  13. #13
    Membre du Club Avatar de sisiniya
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Points : 67
    Points
    67
    Par défaut
    Merci pour vos remarques : voilà mon code modifie après les changements recommendés par vous. (si j'ai bien compri)

    Lire 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
    17
    static public List<Livres> readFromFile() throws IOException, ClassNotFoundException {
                    List<Livres> l = new ArrayList<Livres>();
    
    		FileInputStream fis = new FileInputStream("mesLivres.txt");
    		try {
    			ObjectInputStream ois = new ObjectInputStream(fis); // dans cette ligne, le programme se bloque !
    			try {
                                        return (List<Livres>)ois.readObject();
    
    			} finally {
    				ois.close();
    			}
    		} finally {
    			fis.close();
    		}
    	}
    Ecrire 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
    17
    18
    static public void saveInFile(Livresc) throws IOException, ClassNotFoundException {
                    List<Livres> lc = new ArrayList<Livres>();
                    lc = (List<Livres>) readFromFile(); // à cause de le bloquage qui est dans readFromFile (fct au dessus)
    		FileOutputStream fos = new FileOutputStream("mesLivres.txt");
                    if(lc == null)  lc = new ArrayList<Livres>();
                    lc.add(c);
    		try {
    			ObjectOutputStream oos = new ObjectOutputStream(fos);
    			try {
    				oos.writeObject(lc);
    			} finally {
    				oos.close();
    			}
    		} finally {
    			fos.close();
    		}
    	}
    Mon Main.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Livres c1 = new Livres(1,"TITRE1", "AUTEURE1");
    List<Livres> list = new ArrayList<Livres>();
            
            saveInFile(c1);
            list = (List<Livres>)readFromFile();
    
        System.out.print(list.size());
    Exception générée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Exception in thread "main" java.io.StreamCorruptedException: invalid stream header: ACED2005
            at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:783)
            at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
            at testefichier.Main.readFromFile(Main.java:70)
            at testefichier.Main.saveInFile(Main.java:49)
            at testefichier.Main.main(Main.java:36)
    Java Result: 1
    les lignes marquées en rouge se sont les correspondente de (Main.java:70)
    (Main.java:49) (Main.java:36)


    S'il vous plaît, veuillez m'aider, parceque vraiment je me suis coincé la dessus, ça fait plusieurs jours que j'essaye de résoudre ce problème, mais vainement.

    Merci encore pour vos aides.

    Sisiniya.

  14. #14
    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
    Cette exception correspond à la lecture d'un fichier qui n'est pas un fichier sérialisé...

    C'est normal que tu tentes de lire le fichier avant de l'écrire ????


    a++

  15. #15
    Membre du Club Avatar de sisiniya
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Points : 67
    Points
    67
    Par défaut
    d'accord, mais je suis sûr que ce n'est pas l'origine de problème. Preuve : voilà j'ai ajouté des verifications avant de lire et d'enregistrer, et le même message s'affiche.

    D'ailleurs, avec ces verifications il y a une nouvelle chose, c'est que je réussi à enregister correctement dans le fichier pour la 1er fois, mais si je tente de le faire une 2ème fois, la même exception est élevée !!!!

    Ecrire :
    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
    static public List<Livres> readFromFile() throws IOException, ClassNotFoundException {
                    List<Livres> l = new ArrayList<Livres>();
    
    		FileInputStream fis = new FileInputStream("mesLivres.txt");
                    if(fis.read() != -1){
                            try {
                                    ObjectInputStream ois = new ObjectInputStream(fis);
                                    System.out.println("2");
                                    try {
                                                return (List<Livres>)ois.readObject();
    
                                    } finally {
                                            ois.close();
                                    }
                            } finally {
                                    fis.close();
                            }
                    }
    //il rentre dans ce else, vue que cé la 1er fois que j'écri ds le file
                    else    return null;
        }
    Lire :
    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
     
    static public void saveInFile(Livres c) throws IOException, ClassNotFoundException {
                    List<Livres> lc = new ArrayList<Livres>();
                    if(readFromFile() == null)  lc = new ArrayList<Livres>();
                    else    lc = (List<Livres>) readFromFile();
    		FileOutputStream fos = new FileOutputStream("mesLivres.txt");
     
                    lc.add(c);
    		try {
    			ObjectOutputStream oos = new ObjectOutputStream(fos);
    			try {
    				oos.writeObject(lc);
                                    System.out.println("1"); // il rentre
    			} finally {
    				oos.close();
    			}
    		} finally {
    			fos.close();
    		}
    	}
    Mon MAIN.JAVA:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Livres c1 = new Livres(1,"TITRE1", "AUTEURE1");        
    saveInFile(c1);
    Si j'éxecute pour la 1er fois (fichier est vide) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    BUILD SUCCESSFUL (total time: 0 seconds)
    et le fichier est alimenté par l'objet c1

    si je tente d'executer une 2fois voilà le message :
    Exception générée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Exception in thread "main" java.io.StreamCorruptedException: invalid stream header: ED000573
            at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:783)
            at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
            at testefichier.Main.readFromFile(Main.java:73)
            at testefichier.Main.saveInFile(Main.java:49)
            at testefichier.Main.main(Main.java:36)
    Java Result: 1
    BUILD SUCCESSFUL (total time: 0 seconds)
    Alors, la source de problème est dans la fonction ' readFromFile ' et spécialement dans la ligne là où il y a : ObjectInputStream ois = new ObjectInputStream(fis);.
    car dans la 1er fois, il ne rentre pas dans le if -> donc il n'execute pas cette ligne, mais dans la 2fois, si le fichier est plein (if fis.read() != -1), là il rentre dans le corps de la condition if, et il est coincé dans cette instruction.


    S'il vous plaît, aidez moiiiiiii.

    Sisiniya.

  16. #16
    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
    Citation Envoyé par sisiniya Voir le message
    car dans la 1er fois, il ne rentre pas dans le if -> donc il n'execute pas cette ligne, mais dans la 2fois, si le fichier est plein (if fis.read() != -1), là il rentre dans le corps de la condition if, et il est coincé dans cette instruction.
    En même temps ton nouveau code n'est pas correct : si le read() retourne une valeur différente de -1, cela signifie que tu as lu un octet du header, d'où le "invalid stream header"...


    a++

  17. #17
    Membre du Club Avatar de sisiniya
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Points : 67
    Points
    67
    Par défaut
    Donc qu'est ce que je dois faire ?

    Au fait, quand j'affiche fis.read(), il me retourne 172.


    Merci .

  18. #18
    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
    Tu ne dois pas faire ce read() qui ne sert à rien !
    Ton code précédent de readFromFile() était tout à fait correct donc je ne comprend pas pourquoi tu fais cela !?

    a++

  19. #19
    Membre du Club Avatar de sisiniya
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Points : 67
    Points
    67
    Par défaut
    le read je l'ai fait parceque vous avez dit que je tente de lire un fichier qui est déjà vide, c'est pourcela j'aiessayé de mettre un teste avant de procéder à une lecture dans le fichier.


    Vous avez dit que ma fonction est correcte,mais s'il est correcte d'où vient le problème ( Exception que j'ai affiché) donc ??

    La réponse : l'exception est à cause de cette ligne :

    [citation]
    la source de problème est dans la fonction ' readFromFile ' et spécialement dans la ligne là où il y a : ObjectInputStream ois = new ObjectInputStream(fis);.

    [/citation]


    Merci de m'aider

  20. #20
    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
    Citation Envoyé par sisiniya Voir le message
    le read je l'ai fait parceque vous avez dit que je tente de lire un fichier qui est déjà vide, c'est pourcela j'aiessayé de mettre un teste avant de procéder à une lecture dans le fichier.
    Oui mais quand tu lis un caractère tu l'enlèves du flux. Donc il ne sera plus présent pour l'objectinputstream...

    Citation Envoyé par sisiniya Voir le message
    Vous avez dit que ma fonction est correcte,mais s'il est correcte d'où vient le problème ( Exception que j'ai affiché) donc ??
    Je l'ai déjà dit aussi :
    Citation Envoyé par adiGuba Voir le message
    Cette exception correspond à la lecture d'un fichier qui n'est pas un fichier sérialisé...

    C'est normal que tu tentes de lire le fichier avant de l'écrire ????
    Pourquoi tu veux lire le fichier avant de l'écrire ? C'est inutile et ca te fait tout planter lorsque le fichier est inexistant ou vide...


    a++

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Lire contenu d'un fichier txt.gz
    Par metalcoyote dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/10/2008, 11h36
  2. lire contenu d'un fichier
    Par Piccolo_son dans le forum Langage
    Réponses: 5
    Dernier message: 16/12/2007, 17h49
  3. Lire le contenu d'un fichier PDF
    Par skywaukers dans le forum Delphi
    Réponses: 6
    Dernier message: 18/07/2006, 12h01
  4. Réponses: 5
    Dernier message: 16/03/2005, 22h17
  5. [Fichier] Lire le contenu d'un fichier
    Par bart64 dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 19/09/2004, 18h18

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