Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1675 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Chargement d'un fichier de sauvegarde

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Chargement d'un fichier de sauvegarde

n°1385200
DrOctopus
Posté le 10-06-2006 à 19:06:32  profilanswer
 

Bonjour,
j'ai un programme où je stock des données d'individu (homme,age,etc),que je sauvegarde de cette manière:
       try
         {
            BufferedOutputStream bos = new BufferedOutputStream ( new FileOutputStream ("Essai.dat" ));
            ObjectOutputStream oos = new ObjectOutputStream (bos);
            oos.writeObject(stock);
         }
        catch ( java.io.FileNotFoundException fnfe)  
        {  
        }  
        catch ( IOException e)  
        {  
        }  
 
le fichier sauvegardé s'appelle donc Essai.dat, mais lorsque je relance le programme,j'aimerais qu'il se charge et que les données soit chargées également.
Savez vous quelle instruction ou commen je dois faire pour cela SVP ?
d'avance merci et a bientot  :hello:

mood
Publicité
Posté le 10-06-2006 à 19:06:32  profilanswer
 

n°1385213
Sebou77
French Tech powaa :-)
Posté le 10-06-2006 à 19:54:25  profilanswer
 

en fait tu veux rechopper les données que tu as mis dans ton fichier ?
 
Bah faut lire le fichier !
Ou alors j'ai pas compris :??:

n°1385307
trevor
laissez la vie vous étonner...
Posté le 11-06-2006 à 00:45:18  profilanswer
 

J'ai compris la même chose : relecture du fichier.
 
Suffit d'utiliser le pendant des mêmes classes (ObjectInputStream, etc.) en oubliant pas de caster le retour de "readObject()" avec la classe stockée dans ton fichier .dat


---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net
n°1385308
DrOctopus
Posté le 11-06-2006 à 00:45:43  profilanswer
 

ouai voila,bah fo faire comment pour charger/lire un fichier au démarage du programme en fait ? :)

n°1385309
trevor
laissez la vie vous étonner...
Posté le 11-06-2006 à 00:51:54  profilanswer
 

Mêmes principes que pour l'écriture, mais avec le pendant des classes en xxxInputxxx. Fais des tests, et cherche un peu ;)
 
Nb: je vois pas trop l'intérêt d'utiliser un BufferedxxxStream, vu que tu écris ou lis 1 seul objet (à moins que les pontes de Java me disent le contraire).
 
Nb2: fermer les flux pourrait être une bonne idée aussi (+ propre!!)


Message édité par trevor le 11-06-2006 à 00:53:03

---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net
n°1385423
DrOctopus
Posté le 11-06-2006 à 15:43:15  profilanswer
 

désole jsui un peu nul en java,j'ai pas tres bien compris on explication

n°1385449
DrOctopus
Posté le 11-06-2006 à 17:35:40  profilanswer
 

voila j'ai rajouter ca sur un boutton "charger" pour charger le fichier Essai.dat et ses données, mais ca fai rien:
 
        try
        {
        BufferedInputStream bis = new BufferedInputStream (new FileInputStream ("Essai.dat" ));
        ObjectInputStream ois = new ObjectInputStream (bis);
        this.stock = (Vector<Individu> )ois.readObject();
         }
 
        catch ( java.io.FileNotFoundException fnfe)  
        {  
        }  
        catch ( IOException e)  
        {  
        }
        catch (ClassNotFoundException cnf)
        {
        }

n°1385464
trevor
laissez la vie vous étonner...
Posté le 11-06-2006 à 18:41:50  profilanswer
 

Ca me semble +ou- correct pourtant. As-tu vérifié ce que tu avais dans ton objet "this.stock" ?
 
Sinon, les try/catch ça serait bien de les coder proprement, et d'ailleurs ça te mettrai peut-être sur la voie, notamment en mettant au poins un System.out.println(message) qui te permettrait de savoir si l'une des exceptions a été déclenchée...
 
Bis repetitae: la question de la fermeture des flux après leur utilisation reste d'actualité.

n°1385506
DrOctopus
Posté le 11-06-2006 à 22:57:31  profilanswer
 

merci pour ta réponse,maintenant j'ai ça:
 
        try
        {
        BufferedInputStream bis = new BufferedInputStream (new FileInputStream ("Essai.dat" ));
        ObjectInputStream ois = new ObjectInputStream (bis);
        this.stock = (Vector<Individu> )ois.readObject();
         }
 
        catch ( IOException e)  
        {  
            System.out.println("IOException marche!" );  
            System.out.println(this.stock);  
        }
        catch (ClassNotFoundException cnf)
        {
            System.out.println("ClassNotFoundException marche!" );  
        }
 
Ile m'affiche que seule l'exception IOException a été déclenchée,pas l'autre.
Sinon dans le this.stock,quand je relance le programme,il me marque qu'il y a rien dedans,c'est normal car il charge aucune donnée du fichier...

n°1385511
gocho
Posté le 11-06-2006 à 23:09:55  profilanswer
 

DrOctopus a écrit :


     
            System.out.println("IOException marche!" );  
         
            System.out.println("ClassNotFoundException marche!" );  
         
 


[:pingouino] Original le message d'erreur.
Sinon affiche la trace de ton exception (nomDeLException.printstacktrace()), ca te dira plus ou moins ou ca a merde  


---------------
Mon feedback
mood
Publicité
Posté le 11-06-2006 à 23:09:55  profilanswer
 

n°1385519
trevor
laissez la vie vous étonner...
Posté le 11-06-2006 à 23:31:41  profilanswer
 

DrOctopus a écrit :

merci pour ta réponse,maintenant j'ai ça:
Ile m'affiche que seule l'exception IOException a été déclenchée,pas l'autre.
Sinon dans le this.stock,quand je relance le programme,il me marque qu'il y a rien dedans,c'est normal car il charge aucune donnée du fichier...


Tu ferais bien de googliser un petit peu pour savoir à quoi sert une exception... En l'occurrence, il est normal d'en avoir qu'une seule d'exception (enfin une à la fois dirons-nous), et ça serait même encore mieux si aucune n'était déclenchée.
 
Donc direction --> les exceptions, et quoi-t'est-ce que les IOException et les ClassNotFoundException et pourquoi tu utilises celles-là dans ce bout de code.
 
Sinon, je persiste :
- FERME tes PU*%$s de flux après utilisation
- vire le chainage de flux en Buffered, ça sert à rien, et ça rajoute une couche d'erreurs possibles


---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net
n°1385521
masklinn
í dag viðrar vel til loftárása
Posté le 11-06-2006 à 23:37:02  profilanswer
 

Ce serait ptet une bonne idée de repartir de 0 et d'essayer de remonter ça proprement en comprenant comment fonctionne la sérialization non?
 
Parce que chez moi un truc comme ça

Code :
  1. import java.io.ObjectOutputStream;
  2. import java.io.ObjectInputStream;
  3. import java.io.FileInputStream;
  4. import java.io.FileOutputStream;
  5. import java.util.ArrayList;
  6. import java.io.IOException;
  7. import java.io.FileNotFoundException;
  8. import java.lang.ClassNotFoundException;
  9. import java.util.Arrays;
  10. import java.util.Collection;
  11.  
  12. class TestSerialize2 {
  13.    public static void main(String[] args) {
  14.        String[] data = {"foo","bar","baz","buzz","bizz"};
  15.        ArrayList<String> appdata = new ArrayList<String>(Arrays.asList(data));
  16.        try {
  17.            ObjectInputStream ins = new ObjectInputStream(new FileInputStream("foo.dat" ));
  18.            ArrayList<String> indata = (ArrayList<String> )ins.readObject();
  19.            indata.close();
  20.            for(int i=0; i<indata.size(); ++i) {
  21.                assert indata.get(i).equals(appdata.get(i));
  22.                System.out.print(indata.get(i)+" " );
  23.            }
  24.            System.out.println("\n" );
  25.        } catch(ClassCastException e) {
  26.            e.printStackTrace();
  27.        } catch(ClassNotFoundException e) {
  28.            e.printStackTrace();
  29.        } catch(FileNotFoundException e) {
  30.            e.printStackTrace();
  31.        } catch(IOException e) {
  32.            e.printStackTrace();
  33.        }
  34.        try {
  35.            ObjectOutputStream outs = new ObjectOutputStream(new FileOutputStream("foo.dat" ));
  36.            outs.writeObject(appdata);
  37.            outs.close();
  38.            System.out.println("Application data:" );
  39.            for(String d: appdata) {
  40.                System.out.print(d+" " );
  41.            }
  42.        } catch(FileNotFoundException e) {
  43.            e.printStackTrace();
  44.        } catch(IOException e) {
  45.            e.printStackTrace();
  46.        }
  47.    }
  48. }


fonctionne très bien.
(à un warning près quand on compile en -Xlint, mais impossible de l'éviter)
 
Sinon, comme les autres l'ont dit:

  • Ferme tes flux [:mlc]
  • C'est quoi l'intérêt d'un BufferedReader [:petrus dei]
  • Comprends tu comment fonctionnent les exceptions?
  • Comprends tu pourquoi et en quoi ton code risque de balancer des IOException ou des ClassNotFoundException? Non parce que si tu mets juste les catch pour faire taire le compilateur ça va pas  trop marcher [:pingouino]


Message édité par masklinn le 11-06-2006 à 23:41:02

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1385525
the real m​oins moins
Posté le 11-06-2006 à 23:51:51  profilanswer
 

l'interet du buffer, c'est si son object est possiblement gros; mais vu qu'il ferme pas son flux et que son object est petit, ben son fichier est vide [:dawa]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1385526
masklinn
í dag viðrar vel til loftárása
Posté le 11-06-2006 à 23:56:15  profilanswer
 

the real moins moins a écrit :

l'interet du buffer, c'est si son object est possiblement gros


Je parlais bien sûr de l'intérêt dans son cas de sérialization :jap:  
 
Et il les faut franchement gros les objets pour que ça ait un intérêt, un Array de 100 Integer (pas int) c'est sérialisé en 1ko [:pingouino]
 
Et ce serait pas plutôt pour un grand nombre de petits objets que ce serait intéressant?
 
J'veux dire si on colle un gros objet sérializé en 2Mo ([:pingouino]) on s'en fout qu'il soit envoyé directement dans le fichier et pas bufferé, par contre si on sérialize 200.000 objets de 1ko chacun ça peut être intéressant de sérializer pour ne faire qu'une dizaine ou une centaine d'écritures dans le fichier au lieu de 200.000.
 
Ou alors je me plante sur le principe derrière l'output buffering [:petrus dei]

Message cité 1 fois
Message édité par masklinn le 11-06-2006 à 23:59:20

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1385533
the real m​oins moins
Posté le 12-06-2006 à 00:11:20  profilanswer
 

ha, ché pas, mais en tous cas, là, vu qu'il ferme pas son flux, c'est clair qu'il écrit rien :D


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1385548
trevor
laissez la vie vous étonner...
Posté le 12-06-2006 à 01:05:48  profilanswer
 

masklinn a écrit :

par contre si on sérialize 200.000 objets de 1ko chacun ça peut être intéressant de sérializer pour ne faire qu'une dizaine ou une centaine d'écritures dans le fichier au lieu de 200.000.


Moi aussi c'est comme ça que j'avais compris l'intérêt de la bufferisation, en tout cas.


---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net
n°1385694
DrOctopus
Posté le 12-06-2006 à 11:55:32  profilanswer
 

merci pour tous vos message !
Bah je vous explique ,je fai un projet de Java ,et la serialisation je ne l'ai pas encore vu,alors je suis un peu perdu dans ce domaine.Je ne fais que des copier coller avec ce que me conseil mon prof de java,donc peut etre que c'est une buse en effet :-D
 
Par contre je comprend pas tres bien l'histoire du flux, ca se ferme comment ??
desolé encore pour ces questions qui vous paraissent débiles,a bientot j'éspere...  

n°1385899
gocho
Posté le 12-06-2006 à 16:38:53  profilanswer
 

DrOctopus a écrit :

merci pour tous vos message !
Bah je vous explique ,je fai un projet de Java ,et la serialisation je ne l'ai pas encore vu,alors je suis un peu perdu dans ce domaine.Je ne fais que des copier coller avec ce que me conseil mon prof de java,donc peut etre que c'est une buse en effet :-D
 
Par contre je comprend pas tres bien l'histoire du flux, ca se ferme comment ??
desolé encore pour ces questions qui vous paraissent débiles,a bientot j'éspere...


 
sans vouloir t'offenser, c'est peut etre pas la seule buse dans l'histoire [:dawa]
Ne te contente pas de recopier ce qu'il dit !  
demande des explications, cherche sur le net le pourquoi du comment :)

n°1386286
DrOctopus
Posté le 13-06-2006 à 10:39:23  profilanswer
 

lol je sais bien que c'est moi la buse :)
mais bon je comprend pas trop ce que je fais, enfin un peu quand meme lol,ca serait simpa de m'expliquer clairement le probleme,et de me proposer des solutions... :(
S'il vous plait help me sinon je suis dead

n°1387847
trevor
laissez la vie vous étonner...
Posté le 15-06-2006 à 00:01:11  profilanswer
 

DrOctopus a écrit :

Par contre je comprend pas tres bien l'histoire du flux, ca se ferme comment ??


Comment on dit "fermer" en anglais ?


---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Chargement d'un fichier de sauvegarde

 

Sujets relatifs
Probleme de droits création fichiercomment transmettre par mail un fichier joint par 1 formulaire jscript
lecture d'un fichiercopie fichier avec vba
Supprimer une ligne d'un fichier txtImporter un fichier excel dans une base mysql? Howto
Définir l'ordre de chargement des éléments d'une pageFichier .txt => Tableau Array() ?
lancer une page php avec un fichier batouvrir un fichier dans un repertoire
Plus de sujets relatifs à : Chargement d'un fichier de sauvegarde


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR