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 :

Sauvegarde d'un tableau


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Par défaut Sauvegarde d'un tableau
    Bonsoir,

    A l'aide de mon programme j'insère dans un tableau à deux dimensions des chaines de caractères saisies par l'utilisateur.
    Je dispose d'une bouton Sauvegarde qui me permet de placer le contenus des zone de saisie dans les différentes cases du tableau. Jusque là tout va bien.

    Par contre j'aimerais créer un fichier de sauvegarde qui me permettrait lorsque j'appuie sur le bouton Sauvegarde de mettre tout le tableau dans le dit fichier.
    Lors du lancement du programme le fichier serait lu et le tableau redonné au programme pour avoir une persistance des données saisies par l'utilisateur.
    Si le fichier existe déjà alors il n'est pas créer, sinon ont le créer une fois.

    Je pensais à quelque chose de cette forme mais j'ai un soucis dessus :

    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
    ObjectInputStream chLecture;
    ObjectOutputStream chEcriture;
     
    try
        	{
        		chLecture = new ObjectInputStream(new BufferedInputStream(new FileInputStream(new File("année2009.txt"))));
        		chLecture.readObject(backup);
        		chLecture.close();
        	}
        	catch(ClassNotFoundException e)
        	{
        	}
    ...
    if (parEvt.getSource()==chBoutonSauvegarde)
    		{
    try
    			{
    				chEcriture = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(new File("année2009.txt"))));
    				chEcriture.writeObject(backup);
    				chEcriture.close();
    			}
    			catch(FileNotFoundException e)
    			{
    			}
    			catch(IOException e)
    			{
    			}
    Or j'ai l'erreur readObject() in java.io.ObjectInputStream cannot be applied to (Sauvegarde)

    La classe Sauvegarde étant bien serialisé, elle ne contient qu'un seul champ, il s'agit du tableau a deux dimensions.

    Merci d'avance.

  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 : 46
    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
    étonnament, il n'existe pas de méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void ObjectInputStream.readObject(Sauvegarde)
    par contre, il existe un méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object ObjectInputStream.readObject()
    qui te retourne l'objet lu, donc celui que tu avais sauvegardé la fois précédente. Bref, c'est ça qu'il faut utiliser

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Par défaut
    Ah merci pour la méthode, par contre j'ai un autre petit problème

    Lorsque je lance mon programme j'ai placé la méthode chLecture.readObject() or il ne me charge rien du tout.

    De plus lors de chaque sauvegarde il me crée il nouveau fichier "année2009.txt"
    je me doute que c'est à cause du New File("année2009.txt") mais je ne vois pas comment indiquer à chEcriture que je parle de ce fichier en particulier.

    Une autre question mais bien moins grave, un fichier .txt est il correct dans ce cas là ? J'ai par curiosité ouvert le dit fichier et j'ai trouvé plein de caractère et au milieu de tout ça les dernières informations ajouté au tableau. ( qui disparaitrons lors de la prochaine sauvegarde )

    Merci bien.

  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 : 46
    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
    Citation Envoyé par MmD_host Voir le message
    Lorsque je lance mon programme j'ai placé la méthode chLecture.readObject() or il ne me charge rien du tout.
    Mais encore? Que se passe-t-il: Exception? Renvoie un null? Renvoie autre chose?

    Citation Envoyé par MmD_host Voir le message
    De plus lors de chaque sauvegarde il me crée il nouveau fichier "année2009.txt"
    Ben oui il écrase le fichier précédent, y a aps de raison de garder ce qui s'y trouve de toutes facons. En plus, on ne peut pas travailler en append avec des ObjectOutputStream().
    Pour info, l'écrasement viens du "new FileOutputStream()"
    [QUOTE=MmD_host;4321988]

    Citation Envoyé par MmD_host Voir le message
    Une autre question mais bien moins grave, un fichier .txt est il correct dans ce cas là ? J'ai par curiosité ouvert le dit fichier et j'ai trouvé plein de caractère et au milieu de tout ça les dernières informations ajouté au tableau.
    Le format de ObjectOutputStream est binaire. Maintenant, le fichier, tu lui donne l'extension que tu veux.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Mais encore? Que se passe-t-il: Exception? Renvoie un null? Renvoie autre chose?
    Non il ne renvois rien, aucune exception, ce qu'il aurait fallu c'est que si j'avais saisie des informations sur la semaine en cours, celle ci ce serait afficher lors de la lecture du fichier.

    Citation Envoyé par tchize_ Voir le message
    Ben oui il écrase le fichier précédent, y a pas de raison de garder ce qui s'y trouve de toutes facons.
    Bah la raison serait d'avoir un traitement des données persistant, ainsi on peut ouvrir et fermer l'application et garder les informations rentrées.

    Merci bien.

  6. #6
    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 : 46
    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
    en java on ne renvoie jamais "rien" si la méthode n'est pas void. Les possibilité sont "une exception est lancée", "null est renvoyé" ou "un résultat est renvoyé qui ne correspond pas à tes attentes". Dans ce dernier cas, décrire ce résultat. N'hésite pas a poster ton code, puisque tu l'a modifié.

    Pour la persistance, avec objetoutputstream, tu envoie tout les objets que tu veux préserver dedans. Lorsque tu lira tu recevra ces même objets, dans le même ordre. C'est donc à toi, lorsque tu écrit, d'envoyer tout ce que tu veux dans le fichier (donc ce que tu as restauré + ce que tu as ajouté)

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/06/2008, 10h34
  2. Réponses: 4
    Dernier message: 29/04/2008, 09h52
  3. Sauvegarde d'un tableau dans mysql
    Par cedre22 dans le forum Administration
    Réponses: 1
    Dernier message: 11/01/2006, 21h02
  4. [BD Access] Sauvegarde d'un tableau
    Par Tips dans le forum C++
    Réponses: 3
    Dernier message: 07/01/2006, 19h51

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