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 :

Lecture d'un objet depuis un fichier bloquant


Sujet :

Entrée/Sortie Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 147
    Points : 102
    Points
    102
    Par défaut Lecture d'un objet depuis un fichier bloquant
    Bonjour à tous.

    Je cherche à lire une table de hachage précédemment écrite dans un fichier.
    Problème: A la lecture du fichier, la fonction readObject() est bloquante.
    Mais elle est bloquante uniquement lorsque mon objet valeur de ma table de hachage est de type Contact(), qui est une classe que j'ai créée. Si l'objet valeur est de type String par exemple, alors cela ne pose aucun problème.

    Un peu de code:

    Voilà la classe dont je me sers pour écrire ma table de hachage dans le fichier et pour la récupérer.
    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 class Fichier {
     
    	public void ecrireObjet(String nom, Hashtable o) throws IOException{
    		ObjectOutputStream ois = null;
    		FileOutputStream fos = null;
     
    			fos = new FileOutputStream(nom + ".dat");
    			ois = new ObjectOutputStream(fos);
    			ois.writeObject(o);
    			ois.close();
    			fos.close();
    	}
     
    	public Hashtable lireObjet(String myName) throws IOException{
    		ObjectInputStream in = null;
    		Hashtable h = null;
    		FileInputStream fis = null;
    		fis = new FileInputStream(myName + ".dat");
    		in = new ObjectInputStream(fis);
    		try{
    			System.out.println("Before " + myName);
    			h = (Hashtable) in.readObject();
    			System.out.println("After " +myName);
    		}
    		catch (ClassNotFoundException cnfe){ }
    		in.close();
    		fis.close();
    		return h;
    	}
    }
    Ma classe Contact est constituée uniquement d'attributs de type String avec des accesseurs et modifieurs.

    Ainsi, le "Before" est imprimé en console tandis que ce n'est pas le cas de l' "after".

    Merci de votre aide.

    Dest.

  2. #2
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 257
    Points : 308
    Points
    308
    Par défaut
    salut

    Deja dans ton catch il faudrait que tu affiche un message d'erreur au lieu rien faire histoire de voir si tu a pas une erreur dans le cas ou sa coince
    car faire un catch{} sa enleve pas mal de visibilité de deroulement de ton programme surtout si sa merde dans le try associé

    ++

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 147
    Points : 102
    Points
    102
    Par défaut
    Merci de ta réponse.

    Effectivement, tu as pointé du doigt une grossière erreur.
    J'ai tout simplement repris une classe écrite il y a longtemps et vu qu'elle fonctionnait, j'en suis arrivé à oublier les exceptions.

    Et finalement, le problème est à l'écriture dans le fichier, je lève une exception à writeObject(o);
    La voici:
    java.io.NotSerializableException: project.Contact

    Je vais chercher de ce côté-ci.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 147
    Points : 102
    Points
    102
    Par défaut
    Bon j'ai finalement ajouté "implements Serializable" à ma classe Contacts et cela à fonctionner.

    Merci du coup de main, j'ai cherché pendant 3h malgré tout.

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

Discussions similaires

  1. Lecture d'une matrice depuis un fichier
    Par benois123 dans le forum C
    Réponses: 14
    Dernier message: 08/11/2013, 15h47
  2. Lecture chemin d'un fichier depuis un fichier texte
    Par arou dans le forum Débuter
    Réponses: 2
    Dernier message: 23/01/2009, 21h59
  3. Lecture depuis un fichiers txt
    Par mask91 dans le forum C++
    Réponses: 15
    Dernier message: 04/03/2007, 22h40
  4. problème de lecture depuis un fichier texte
    Par [Hugo] dans le forum C++
    Réponses: 12
    Dernier message: 27/10/2006, 16h46
  5. Lecture depuis un fichier
    Par Wyatt dans le forum C++
    Réponses: 4
    Dernier message: 01/03/2005, 13h38

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