Tom's Guide > Forum > Programmation > ecrire et lire un fichier .TXT avec java
Mot :    Pseudo :           
 

bonjour tout le monde

comment je peux enregistrer des données sur un fichier .txt avec java

l'utilisateur fait rentrer des données et quand il tape sur enregistrer aprés avoir rentrer le nom du fichier les données sont enregistrées dans un fichier .TXT


et comment je peux ouvrir un fichier .txt et recuperer ces données

je sais que le sujet est abordé pas mal de fois mais je n'arrive pas à l'appliquer

SVP j'attends vos reponses je suis bloquée

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

FileOutputStream et FileInputStream

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

Bonjour à tous,

ça fait un bon moment que le sujet est inactif mais je tombe dessus aujourd'hui, et je trouve que c'est une question que beaucoup de personnes pourraient se poser

Mais "FileOutputStream et FileInputStream", c'est vraiment pas clair... :??:
en plus utiliser FileOutputStream et FileInputStream sans buffer ce n'est pas terrible



Pour enregister une donnée dans un fichier .txt, tu doit d'abord te demander si tu enregistre un objet ou un type primitif (integer, double, float...)

Si tu doit enregistrer des objets, tu doit importer le package java.io.Serializable
exemple : on a une classe "Livre", tu voudrait enregistrer un objet livre un moment...
et bien il faut rentrer cette ligne de code tout en haut de ta classe :

Code :
  1. import  java.io.Serializable;



et déclarer ta classe de cette façon :

Code :
  1. public class Livre implements Serializable



(sans ça tes objets ne pourront pas être sauvegardé. La serialisation, c'est le nom qu'on donne à l'action de sauvegarder un objet)


pour enregistrer un objet, tape ce code :

Code :
  1. Livre monLivre;
  2. ObjectOutputStream oos;
  3. try{
  4.     oos = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(new    File("tonFichierTexte.txt" ))));
  5.     oos.writeObject(monLivre);
  6.     oos.close();
  7. }
  8. catch (java.io.IOException e) {e.printStackTrace();}




pour lire l'objet, tape ce code :

Code :
  1. ObjectInputStream ois;
  2. try
  3. {
  4.     ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(new    File("tonFichierTexte.txt" ))));
  5.     monLivre = (Livre)ois.readObject();
  6.     ois.close();
  7. }
  8. catch (IOException e) {e.printStackTrace();}
  9. catch (ClassNotFoundException e2) {e2.printStackTrace();}





Si tu doit juste lire et/ou écrire des types primitifs, tu n'as pas besoin d'importer le package java.io.Serialisable, ni d'implémenter "Serializable" à ta classe Livre

pour enregistrer un type primitif dans un fichier texte tape ce code :

Code :
  1. int nombre;
  2. try {
  3.         dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(new File("tonFichierTexte.txt" ))));
  4.         dos.writeInt(nombre);
  5.     dos.close();
  6. }
  7. catch (java.io.IOException e) {e.printStackTrace();}



(si tu doit enregistrer un double au lieu d'un int par exemple, remplace la fonction writeInt, par writeDouble...)


Pour lire un type primitif dans un fichier texte, tape ce code :

Code :
  1. try
  2. {
  3.     dis = new DataInputStream(new BufferedInputStream(new FileInputStream(new File("saveNbGenres.txt" ))));
  4.     nbGenres = dis.readInt();
  5.     dis.close();
  6. }
  7. catch (java.io.IOException e) {e.printStackTrace();}



(même chose ici, si tu doit lire un type différent, remplace la fonction readInt, par readFloat, ou readDouble...)




Pour écrire ou lire plusieurs données, tu n'as qu'a faire une boucle, dans ce genre :

Code :
  1. int nombre, i, nombreMax;
  2. try {
  3.         dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(new File("tonFichierTexte.txt" ))));
  4.         i = 0;
  5.         while (i < nombreMax) {
  6.         dos.writeInt(nombre);
  7.         }
  8.     dos.close();
  9. }
  10. catch (java.io.IOException e) {e.printStackTrace();}




procède le la même façon pour lire plusieurs données.

(note : la 1ère donnée écrite, sera la 1ère lue. On parle de FIFO, First In First Out)


quand tu écris dans un fichier (avec oos ou dos) le fichier sera créé (dans le repertoire où se situe le main) si il n'existe pas. Par contre si tu essai de lire (avec ois ou dis) un fichier qui n'existe pas, cela va générer une erreur.



J'espère que ceci pourra en aider quelques uns :hello:


Message édité par slack_457 le 12-09-2009 à 06:48:15
Répondre à slack_457

Enfin une remontée de topic utile. :)

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
Tom's Guide > Forum > Programmation > ecrire et lire un fichier .TXT avec java
Aller à :

Il y a 566 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Liens