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

avec Java Discussion :

Conservation des données d'une hastable


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 47
    Par défaut HELP ! Conservation des données d'une hastable
    bonjour à tous..voilà mon probleme du jour :

    j'ai creer une petit programme qui stocke nom,prenom,age (pour me familiariser avec les fonctions et la hastable) dans une hastable qui marche bien mais quand je ferme le programme, tout disparait. mais mon but et de conserver les données une fois le programme fermer puis de réenregistrer d'autres données. comment faire pour conserver les données d'un hastable

  2. #2
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Salut,

    Il faut stocker les infos, dans un fichier ou une bdd.
    Voici un tuto qui t'aidera surement.

  3. #3
    Membre chevronné
    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
    Par défaut
    Regarde la Sérialisation
    Il faut sauvegarder les données dans un fichier car c'est la seule chose qui est persistante.
    Tu va écrire ton objet hashtable avec un truc dans le genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objectOutputStream.write(tonObjet)
    et pour le restituer tu utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Hashtable obj = (Hashtable ) objectInputStream.read(fileInputStream)
    Regarde http://java.sun.com/j2se/1.4.2/docs/...putStream.html

  4. #4
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 47
    Par défaut
    merci pour vos reponses, je vais etudier tout çà et je vous dirais ce que cela donne

  5. #5
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 47
    Par défaut
    me voici de retour, j'ai bien regarder le tuto "serialisation" http://ydisanto.developpez.com/tutor...ation/partie1/

    l'on a une classe personne :

    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
    import java.io.Serializable;
     
    public class Personne implements Serializable {
    	static private final long serialVersionUID = 6L;
    	private String nom;
    	private String prenom; 
    	private Integer age;
     
    	public Personne(String nom, String prenom, Integer age) {
    		this.nom = nom;
    		this.prenom = prenom;
    		this.age = age;
    	}
     
    	public String toString() {
    		return nom + " " + nom + " " + age + " ans";
    	} 
    }
    et une classe SerializationMain.java

    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
    33
    34
    35
    36
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectOutputStream;
     
    public class SerializationMain {
     
    	static public void main(String ...args) {
    		try {
    			// création d'une personne
    			Personne p = new Personne("Dupont", "Jean", 36);
    			System.out.println("creation de : " + p);
     
    			// ouverture d'un flux de sortie vers le fichier "personne.serial"
    			FileOutputStream fos = new FileOutputStream("personne.serial");
     
    			// création d'un "flux objet" avec le flux fichier
    			ObjectOutputStream oos= new ObjectOutputStream(fos);
    			try {
    				// sérialisation : écriture de l'objet dans le flux de sortie
    				oos.writeObject(p); 
    				// on vide le tampon
    				oos.flush();
    				System.out.println(p + " a ete serialise");
    			} finally {
    				//fermeture des flux
    				try {
    					oos.close();
    				} finally {
    					fos.close();
    				}
    			}
    		} catch(IOException ioe) {
    			ioe.printStackTrace();
    		}
    	}
    }
    dans la classe SerializationMain.java, on instancie directement la personne , puis on creer le flux. OK....

    or dans ma conception, j'ai plusieurs classes :

    classe personne on je cree
    :

    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
    //le but de ce programme est enregistrer un nom, de faire une hastable et de l'enregistrer dans un fichier
    public class Personne {
     
    	/**
             * @param args
             */
    	private String nom;//variable prive declaré en format chaine 
     
    	/*
    	 * contructeur de la classe personne
    	 * definit, le nom=nom
    	 * 
    	 */
    	public Personne(String nom){
    		this.nom=nom;
    	}
    	/*
    	 * fonction getNom qui return le nom de la personne
    	 */
    	public String getNom(){
    		return nom;
    	}
    	/*
    	 * procedure affichePersonne qui affiche le nom
    	 */
    	public void affichepersonne(){
    		System.out.println(" Nom : "+getNom());
    	}
    }
    une classe Presentation on je mets ma hastable et les methodes , ajout,afficher, et supprimer un nom, donc j'ai un IHM en mode console qui gere le nom, mais quand je ferme l'application je recommence tout


    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    import java.util.Enumeration;
    import java.util.Hashtable;
    public class Presentation {
     
    	//Hashtable pour stocker les personnes
    	static Hashtable <String,Personne> tabPersonne;
     
    	public Presentation (){
    	tabPersonne = new Hashtable<String,Personne>();
    	IHMPresentation .afficherMenu();
    	}
     
    	/**Methode pour ajouter une personne à la liste
             * @param ident
             * @param pers
             * @return
             */
    	public static boolean ajouterPersonne(String ident,Personne pers){
    		tabPersonne.put(ident,pers);
    		return true;
    	}
     
    	public static boolean supprimerPersonne(String ident) 
    	{	
    		if (tabPersonne.containsKey(ident))
    		{
    			tabPersonne.remove(ident);
    			return true;
    		}
    		else
    			return false;
    	}
    	/** Methode qui renvoie une personne en fonction de son ident
             * @param ident
             * @return personne de l'identifiant
             */
    	public static Personne getPersonne (String ident){
    		if (indentPersonneDisponible(ident)) 
    			return null;
    		else
    			return tabPersonne.get(ident);
    	}
    	/** Méthode listant toutes les personnes
             */
    	public static void afficherPersonne(){
    		System.out.println("La liste contient :"+tabPersonne.size()+" personne(s)");
    		System.out.println("———————————————————————————————————————————————————————————\n\n");
    		Enumeration enumIdentPersonne = tabPersonne.keys();
    		String cle;
    		Personne personneLu =null;
    		while(enumIdentPersonne.hasMoreElements())
    		{
    			cle=(String)enumIdentPersonne.nextElement();
     
    			System.out.println("Clé : "+cle);
    			System.out.println("————————————————");
    			personneLu=tabPersonne.get(cle);
    			personneLu.affichepersonne();		
    			System.out.println();
    		}
    	}
    	/** Methode qui vérifie si l'identifiant n'est pas déjà utilisé
             * @param ident
             * @return disponibilité de l'ident
             */
    	public static boolean indentPersonneDisponible(String ident){
    		if (ident.equals("0"))return true;
    		else return !tabPersonne.containsKey(ident);
    	}
     
    }

    ma question est : OU DOIS-JE AJOUTER LE FLUX POUR ENREGISTRER LES DONNES DANS MA HASTABLE QUAND LE PROGRAMME FERME;

    pouvez vous me dire ou ajouter le flux dans mon fichier ?

  6. #6
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 47
    Par défaut
    je bloque car je n'arrive pas a integrer mon objet dans :

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    import java.io.FileOutputStream;//pour la serialisation (entree)
    import java.io.IOException;//pour la serialisation et deserialisation
    import java.io.ObjectOutputStream;//pour la serialisation
    //import java.io.FileInputStream;//pour la deserialisation (sortie)
    //import java.io.ObjectInputStream;//pour la deserialisation
    public class ApplicationPersonne {
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Raccord de méthode auto-généré
    		//programme principal appelant la presentation Personne
    		new Presentation();
    		/*
    		 * ici la serialisation creation du fichier en entree des noms
    		 */
    		try {
    				// création d'une personne
    				ICI JE DOIS METTRE MON OBJET
    								; 
    				System.out.println("creation de :"+OBJET);
    
    				// ouverture d'un flux de sortie vers le fichier "personne.serial"
    				FileOutputStream fos = new FileOutputStream("nom.serial");
    
    				// création d'un "flux objet" avec le flux fichier
    				ObjectOutputStream oos= new ObjectOutputStream(fos);
    				try {
    					// sérialisation : écriture de l'objet dans le flux de sortie
    					oos.writeObject(OBJET); 
    					// on vide le tampon
    					oos.flush();
    					System.out.println(OBJET);
    				} finally {
    					//fermeture des flux
    					try {
    						oos.close();
    					} finally {
    						fos.close();
    					}
    				}
    			} catch(IOException ioe) {
    				ioe.printStackTrace();
    			}
    	}
    }

    la , je bloque car dans le tuto on donne l'exemple avec une instanciation de l'objet mais dans ma creation j'ai creer une methode ajouter() qui enregistre le nom au clavier.
    aidez moi s'il vous plait ???????

Discussions similaires

  1. Conserver des données d'une page à une autre...
    Par Angeldu74 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/08/2005, 14h15
  2. SQL - Traiter des données d'une table
    Par david71 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/02/2005, 16h47
  3. [CR]Importer des données d'une feuille excel
    Par rolan dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 17/12/2004, 22h32
  4. concatenation des données d'une table dans une autre
    Par Fabby69 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 04/10/2004, 11h38
  5. Copie des données d'une table d'une base Interbase 6
    Par Djedjeridoo dans le forum InterBase
    Réponses: 6
    Dernier message: 02/02/2004, 09h39

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