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

Collection et Stream Java Discussion :

modification fichier avec hashmap


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 112
    Points : 58
    Points
    58
    Par défaut modification fichier avec hashmap
    Bonjour à tous,

    G un fichier dans lequel j'ai les profils des personnes: login, mot de passe, adresse.
    Pour lire ce fichier je fais avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ObjectInputStream ois= new ObjectInputStream(new FileInputStream("profils.ser"));
    Pour écrire dedans je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ObjectOutputStream ois= new ObjectOutputStream(new FileOutputStream("profils.ser"));
    Mon probleme:
    J'ai une fonction modifierProfil(loginclient,mot de passe,adresse) qui permet à partir d'un login de modifier le mot de passe et/ou l'adresse.
    Mes profils sont stockés dans une hashmap(tousLesprofils) et la clé est le login.
    Actuellement cette fonction ne marche pas elle ne modifie rien.

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ObjectOutputStream oos= new ObjectOutputStream(new FileOutputStream("profils.ser"));
    Profil profilClient = (Profil) tousLesprofils.get(loginclient);
    profilclient.setProfil(password,nom,adresse);
    oos.writeObject(profilClient);
    oos.close();
    Je sais pas si j'utilise writeObject() ou readObject() pour qu'elle marche. De plus setProfil ne va pas mais je sais par quoi le remplacer.

    Merci d'avance

  2. #2
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    As tu un message d'erreur. Si oui il serait bon de nous le faire partager ...

    Citation Envoyé par icicmoi
    je sais pas si j'utilise writeObject() ou readObject() pour qu'elle marche. De plus setProfil ne va pas mais je sais par quoi le remplacer.
    C'est à dire. Il n'y a rien de modifié dans le fichier ?
    Et l'ibjet profil, sa valeur est bien mise à jour ?

    Par quoi veux tu remplacer le setProfil ? Moi en tous cas je la connais pas cette classe Profil. donc je peux pas grand chose ...
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 112
    Points : 58
    Points
    58
    Par défaut
    En fait je fais une appli client serveur msn.
    Je fais de la sérialisation. L'utilisateur a la possibilité de s'inscrire de se connecter et de modifier son profil.Lorsque celui ci s'inscrit (login,mot de passe,adresse) tout est ecrit dans le fichier profil.ser. Cela marche.
    Par contre si l'utilisateur veut modifier son profil par exemple changer son adresse actuellement il ne peut pas : l'insertion de la modification de l'adresse dans profil.ser ne se fait pas.Et c'est la mon probleme.
    Ci dessous le code pour l'inscription qui marche:
    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 connexion(String loginClient, String motDePasse, String etat, Client leClient) throws FileNotFoundException, IOException, ClassNotFoundException
    	{
    		ObjectInputStream ois = new ObjectInputStream(new FileInputStream("profils.ser"));
    3
    		Profil profilClient = (Profil) tousLesProfils.get(loginClient);
    		if (profilClient != null) {
    			if (profilClient.getMotDePasse().compareTo(motDePasse) == 0) {
    				profilClient.setStubClient(leClient);
    				this.modifierEtat(loginClient, etat);
    				return true;
     
    			}
    		}
    		ois.close();
    		return false;
    	}
    Et mon code pour modifier le profil d'un utilisateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("profils.ser"));
    		Profil profilClient = (Profil) tousLesProfils.get(loginClient);
    		profilClient.setProfil(password, nom, prenom, adresse, telephone);
    		oos.writeObject(profilClient);
    		try {
    			oos.close();
    		} catch (IOException e) {
     
    			e.printStackTrace();
    		}
    		return test;
    De plus en faisant des tests je me suis rendue compte que cette methode setProfil marche bien.C'est au moment de modifier par exemple l'adresse dans le fichier profil.ser que ca marche pas donc ici au moment du writeObject.
    voici ma methode setProfil qui modifie un profil qui se trouve dans la classe Profil:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void setProfil(String password, String nom, String prenom, String adresse, String telephone){
    		this.motDePasse = password;
    		this.adresse = adresse;
    		this.nom = nom;
    		this.prenom= prenom;
    		this.telephone = telephone;
    	}
    Je n'ai pas non plus d'erreur du tout mais si je l'affiche je vois bien que ca na rien changé.

  4. #4
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    En résumé tu arrives lire dans un fichier. Tu arrives enregistrer une HashMap.

    Et tu n'arrives pas à modifier un simple attribut java? C'est ca ou j'ai rien compris. Parce que faut dire que ton explication est pas super très mega clair.

    Ton fichier est crée? Crée mais avec rien dedans? Crée mais avec les anciennes valeurs? Est tu sur que tu réécrase le fichier ?
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 112
    Points : 58
    Points
    58
    Par défaut
    Désolé pour l'explication

    j'arrive à lire le fichier "profil.ser" .
    j'arrive à enregistrer des nouveaux profils de type Hashmap dans ce fichier.
    Mais je n'arrive pas à modifier quelquechose déjà existant dans le fichier par exemple le telephone. sachant que j'utilises la sérialisation

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 112
    Points : 58
    Points
    58
    Par défaut
    pour l'essai de modification je reste toujours avec les anciennes valeurs ca ne modifie rien dans le fichier

  7. #7
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Je ne sais pas si la sérialization permet de modifier dans un fichier uniquement le contenu modifier dans un objet java. Tu peux confirmer que c'est possible ou tu ne sais pas??


    Genre si j'ai un fichier


    64;rue des prune;57000;metz

    Si j'ai un object java avec numero, adresse, code postal et ville. Si je change codepostal en 57003 je sais pas s'il arrivera a le faire tout seul.
    ¨Peut-etre faut-il supprimer la ligne avant?
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

  8. #8
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Je pense qu'il faut que tu déserialise completement ta HashMap, que tu la modifie dans l'objet java puis tu le reserialise en écrasant le précédent.
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 333
    Points : 295
    Points
    295
    Par défaut
    il y a un probléme de concecption pour moi le tout est de savoir si ton fichier .ser contient un seul utilisateur ou toute ta liste

    dans le cas ou tu veux qu il contienne ta liste :
    ceci n est pas bon ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("profils.ser"));
    		Profil profilClient = (Profil) tousLesProfils.get(loginClient);
    		profilClient.setProfil(password, nom, prenom, adresse, telephone);
    		oos.writeObject(profilClient);
    pour être plus précis je voudrais bien savoir à quoi correspond tousLesProfils

  10. #10
    Membre actif Avatar de jibbi
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 165
    Points : 205
    Points
    205
    Par défaut
    J'imagine que tousLesProfils est une liste d'Object Profil.
    J'ai peut-être trouvé le bobo

    T'enregistre dans un fichier un seul profilsClient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    oos.writeObject(profilClient);
    je crois qu tu veux tous les profils dans un seul fichier (c'est logique)
    donc faut y mettre tousLesProfils :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    oos.writeObject(tousLesProfils);
    Ensuite si tu modifie un seul profil et tu faire la sauvegarde il faut faire la sauvegarde de tousLesProfils
    (en souhaitant que ta pas des miller de profils car cela va te prendre une semaine à chaque sauvegarde )

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/05/2007, 16h55
  2. Réponses: 10
    Dernier message: 05/01/2007, 20h54
  3. Modification attributs d'un fichier avec PHP
    Par zetta dans le forum Langage
    Réponses: 1
    Dernier message: 03/07/2006, 11h55
  4. Modification d'un fichier avec vi
    Par fabszn dans le forum Applications et environnements graphiques
    Réponses: 8
    Dernier message: 05/01/2006, 11h50

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