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

  FORUM HardWare.fr
  Programmation
  Java

  Ecriture de String ds un fichier, puis lecture et affichage ds une fen

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Ecriture de String ds un fichier, puis lecture et affichage ds une fen

n°426207
pilou51
Posté le 13-06-2003 à 11:05:35  profilanswer
 

Je fais une boucle qui écrit des String ds un fichier de la manière suivante :

Code :
  1. JTextField zelog = new JTextField(50);
  2.     try {
  3.       BufferedReader fichier = new BufferedReader(new FileReader(
  4.           "c:\\appelslogges.txt" ));
  5.       String ligne = new String();
  6.       do {
  7.         zelog.setText(ligne);
  8.       getContentPane().add(zelog);
  9.       }
  10.       while (ligne != null);
  11.     }
  12.     catch (Exception e) {System.out.println("Erreur : " + e.toString());}


le problème étant que ça me rajoute des caractères bizarres...
 
Mon deuxième problème est que j'aimerais lire et afficher le contenu de ce fichier ds une fenetre, et je ne vois pas trop comment faire...
 
Merci d'avance :)

mood
Publicité
Posté le 13-06-2003 à 11:05:35  profilanswer
 

n°426209
Cherrytree
cn=?
Posté le 13-06-2003 à 11:07:37  profilanswer
 

Un TextField n'affiche qu'une ligne de texte. Voir la classe (J)TextArea.


---------------
Le site de ma maman
n°426215
pilou51
Posté le 13-06-2003 à 11:10:55  profilanswer
 

exact, merci :) par contre, comment puis-je ajouter du texte dedans, comme je le fais (ds une boucle)... il faudrait une méthode du type addText(String)... mais je rêve un peu là :p

n°426221
pilou51
Posté le 13-06-2003 à 11:14:49  profilanswer
 

sans compter que j'ai toujours les caractères bizarres, le setText ne doit pas etre bien pour ça

n°426230
phnatomass
Je m'empare de ton esprit !!
Posté le 13-06-2003 à 11:21:09  profilanswer
 

Désolé mais ton programme est horrible.
Petite correction rapide mais on peux mieux faire.

Code :
  1. JTextArea zelog = new JTextArea(nb_col, nb_ligne);
  2. String line = "";
  3. try {
  4.      BufferedReader fichier = new BufferedReader(new FileReader(
  5.          "c:\\appelslogges.txt" ));
  6. while((line = fichier.readLine())!=null)
  7. {
  8. zelog.append(line+"\n" );
  9. }
  10. }catch (Exception e) {System.out.println("Erreur : " + e.toString());}
  11. getContentPane().add(zelog);

n°426244
pilou51
Posté le 13-06-2003 à 11:28:30  profilanswer
 

Comment ça horrible ?  :whistle:  
 
Effectivement ça écrit bien dedans, mais en visualisant avec notepad, j'ai pas les retours à la ligne (normal ça) et avec word, j'ai des carrés entre chaque caractère.... Bon c pas bien grave si ils sont plus là à l'affichage dans le prog, qui faisait l'objet de ma seconde question ;)
Le mieux pour afficher un log comme ça ds une fenetre, c koi ? JTextArea, JPanel ? et comment faire, j'ai pas réussi :(

n°426270
phnatomass
Je m'empare de ton esprit !!
Posté le 13-06-2003 à 11:42:17  profilanswer
 

line+"\r\n" au lieu de line+"\n";

n°426272
phnatomass
Je m'empare de ton esprit !!
Posté le 13-06-2003 à 11:43:34  profilanswer
 

sinon tu peux combiner ton JTextArea à un JScrollPane pour avoir des barres de défilement si ton texte est supérieur au dimension de ton champ de texte.

n°426281
pilou51
Posté le 13-06-2003 à 11:45:43  profilanswer
 

aaah vi bonne idée merci :jap:

n°426282
pilou51
Posté le 13-06-2003 à 11:46:27  profilanswer
 

pour enlever mes caractères bizarres, pour l'instant je fais une fichier.writeChars(...), y'a mieux comme méthode ?

mood
Publicité
Posté le 13-06-2003 à 11:46:27  profilanswer
 

n°426284
darklord
You're welcome
Posté le 13-06-2003 à 11:49:11  profilanswer
 

phnatomass a écrit :

line+"\r\n" au lieu de line+"\n";


 
 [:tapai]  
 
 
:non:  
 

Code :
  1. public static final String NEW_LINE = System.getProperty("line.separator" );
  2. // line + NEW_LINE


Message édité par darklord le 13-06-2003 à 11:49:57

---------------
Just because you feel good does not make you right
n°426289
pilou51
Posté le 13-06-2003 à 11:51:24  profilanswer
 

houla merci :)

n°426293
phnatomass
Je m'empare de ton esprit !!
Posté le 13-06-2003 à 11:53:07  profilanswer
 

Autant pour moi mais j'avais la flemme de chercher le nom de propriété dans la doc.

n°426297
darklord
You're welcome
Posté le 13-06-2003 à 11:57:10  profilanswer
 

phnatomass a écrit :

Autant pour moi mais j'avais la flemme de chercher le nom de propriété dans la doc.


 
;)


---------------
Just because you feel good does not make you right
n°426301
pilou51
Posté le 13-06-2003 à 11:59:25  profilanswer
 

et euh.... désolé de vous déranger, mais pour mes caractères bizarres ? :)
 
là j'ai des carrés entre chaque caractère, à l'écriture comme à la lecture... donc le pb vient bien de l'écriture et de mes writeChars (String)....
 
 
Merci :)

n°426306
darklord
You're welcome
Posté le 13-06-2003 à 12:02:45  profilanswer
 

pilou51 a écrit :

et euh.... désolé de vous déranger, mais pour mes caractères bizarres ? :)
 
là j'ai des carrés entre chaque caractère, à l'écriture comme à la lecture... donc le pb vient bien de l'écriture et de mes writeChars (String)....
 
 
Merci :)


 
bah, ton fichier txt a surement un format a la con. T'essaie pas de lire un fichier crée sous windows avec linux par hasard?


---------------
Just because you feel good does not make you right
n°426309
pilou51
Posté le 13-06-2003 à 12:07:16  profilanswer
 

nope, sous windows avec windows... et comme je l'ouvre qu'avec java (pas avec une application intermédiaire), je suis surpris de trouver ces caractères à la c**... :)

n°426313
darklord
You're welcome
Posté le 13-06-2003 à 12:10:23  profilanswer
 

pilou51 a écrit :

nope, sous windows avec windows... et comme je l'ouvre qu'avec java (pas avec une application intermédiaire), je suis surpris de trouver ces caractères à la c**... :)


 
et si tu l'ouvres avec notepad (j'ai bien dit notepad pas autre chose) ca dit quoi?


---------------
Just because you feel good does not make you right
n°426315
pilou51
Posté le 13-06-2003 à 12:11:36  profilanswer
 

avec notepad j'ai pas les carrés rajoutés, à part pour les sauts de ligne (ce qu'il fait avec tous les fichiers)...

n°426326
darklord
You're welcome
Posté le 13-06-2003 à 12:29:06  profilanswer
 

pilou51 a écrit :

avec notepad j'ai pas les carrés rajoutés, à part pour les sauts de ligne (ce qu'il fait avec tous les fichiers)...


 
y a des accents dans ton fichier?
 
essaie un autre fichier qui a un contenu tout simple avec seulement des caractères sans accents


---------------
Just because you feel good does not make you right
n°426332
Krueger
tout salaire demande dutravail
Posté le 13-06-2003 à 12:44:19  profilanswer
 

pilou51 a écrit :

avec notepad j'ai pas les carrés rajoutés, à part pour les sauts de ligne (ce qu'il fait avec tous les fichiers)...


 
C'est pas du texte sous codage Unicode ?

n°426398
pilou51
Posté le 13-06-2003 à 13:32:31  profilanswer
 

Y'a que des chiffres et des ":"
Comment je fais pour choisir le type de codage svp ? :)


Message édité par pilou51 le 13-06-2003 à 13:32:57
n°426592
pilou51
Posté le 13-06-2003 à 14:26:10  profilanswer
 

up  :bounce:

n°426646
phnatomass
Je m'empare de ton esprit !!
Posté le 13-06-2003 à 14:39:52  profilanswer
 

Peux tu rappeler de manière général qu fais ton prog.
Au début tu dis que tu lis un ficher et que tu place dans un champ texte java, ensuite tu parle de fichier qui contient des caracteres bizzares sous notepad.
Ou est le rapport entre les 2 ?

n°426663
pilou51
Posté le 13-06-2003 à 14:44:12  profilanswer
 

euh désolé pour la clarté, je reprends tout depuis le début :  
 
mon prog récupère des chaînes de caractère dynamiquement (pour l'instant c statique, mais peu importe) et les stocke ds un fichier... Cette récupération peut s'étaler sur plusieurs jours (période de vacances).
 
Au retour des vacances, l'utilisateur clique sur un bouton et visualise le contenu du fichier de log enregistré. Le tout étant multi-plateforme, je ne veux pas me contenter de faire un lien vers le fichier .txt, je veux l'afficher ds une fenetre java.
 
Pour l'instant, lorsque je regarde le fichier enregistré, ou que je l'affiche, j'ai des  carrés qui viennent se rajouter entre chaque caractère. Voilou, j'espère que ça t'aidera (à m'aider :D )
 
Merci

n°426687
phnatomass
Je m'empare de ton esprit !!
Posté le 13-06-2003 à 14:49:40  profilanswer
 

Pour ecrire dans un fichier texte utilise un Filewriter et appele la méthode write(String str)

n°426709
pilou51
Posté le 13-06-2003 à 14:56:36  profilanswer
 

là je fais :

Code :
  1. FileWriter f = new FileWriter("c:\\appelslogges.txt" );
  2.       PrintWriter file = new PrintWriter(f);
  3.       file.write(donnerHeure().toString() + " : " );
  4.       file.write(numcache.getText().toString() + NEW_LINE);


et ça me sort un fichier vide (0Ko). Idem si je fais sans le PrintWriter, directement le write du FileWriter...
De plus, comment puis-je faire pour me positionner à la fin du fichier pour rajouter des données (ces write se trouvent dans une boucle while(1)...)
 
Merci :jap:

n°426721
phnatomass
Je m'empare de ton esprit !!
Posté le 13-06-2003 à 15:00:05  profilanswer
 

Inutile d'utiliser un PrintWriter
dans ton cas file.flush(); lorsque t' as finit d'écrire tout tes éléménts
 
Pour aller à la fin d'un fichier RandomAccesFile est ton amis.
Avec un seek(ton_fichier.length());


Message édité par phnatomass le 13-06-2003 à 15:03:30
n°426733
pilou51
Posté le 13-06-2003 à 15:02:47  profilanswer
 

vi j'utilisais bien un RandomAccessFile avant, avec son writeChars(string)... je vais coupler les 2 alors.
Là, meme avec un flush() devant, ça m'écrit toujours rien ds le fichier :(

n°426737
pilou51
Posté le 13-06-2003 à 15:04:29  profilanswer
 

Mon code d'écriture complet, au cas où je me planterais vraiment... :  

Code :
  1. try {
  2.       RandomAccessFile fichier = new RandomAccessFile("c:\\appelslogges.txt", "rw" );
  3.       fichier.seek(fichier.length());
  4.       //fichier.writeChars(donnerHeure().toString() + " : " );
  5.       //fichier.writeChars(numcache.getText().toString() + NEW_LINE);
  6.       fichier.close();
  7.       FileWriter f = new FileWriter("c:\\appelslogges.txt" );
  8.       PrintWriter file = new PrintWriter(f);
  9.       file.flush();
  10.       file.println(donnerHeure().toString() + " : " );
  11.       file.write(numcache.getText().toString() + NEW_LINE);
  12.     }
  13.     catch (Exception e) {
  14.       System.out.println("Erreur"+e.toString());
  15.     };

n°426741
phnatomass
Je m'empare de ton esprit !!
Posté le 13-06-2003 à 15:06:19  profilanswer
 

Le flush c'est apres avoir ecrit le fichier.(juste avant de le fermer par exemple )

n°426750
pilou51
Posté le 13-06-2003 à 15:09:55  profilanswer
 

youpi ça marche, il me met plus de carac bizarre :D  
 
par contre, il m'écrit qu'une seule fois, il rajoute pas à la fin :(

n°426785
phnatomass
Je m'empare de ton esprit !!
Posté le 13-06-2003 à 15:21:26  profilanswer
 

Voilà ton prog

Code :
  1. RandomAccessFile fichier = new RandomAccessFile("c:\\appelslogges.txt", "rw" );
  2. fichier.seek(fichier.length());
  3. fichier.write(donnerHeure().toString() + " : ".getBytes());
  4. fichier.write((numcache.getText().toString() + NEW_LINE).getBytes());
  5. fichier.flush();
  6. fichier.close();


Sinon serieusement sans vouloir être méchant. Quand on te tuyaute sur une classe ou une méthode passe un peut de temp à lire la doc /et ou javadoc et essaye de reellement comprendre le fonctionnement de ce que tu écris


Message édité par phnatomass le 13-06-2003 à 15:23:01
n°426786
pilou51
Posté le 13-06-2003 à 15:26:07  profilanswer
 

vi je veux bien mais...
 
y'a pas de write(String) dans RandomAccessFile, y'a que le writeChars que j'utilisais tout à l'heure et qui me rajoute des caractères....... ni de flush d'ailleurs :( si je galère c parceque j'essaie de combiner RandomAccessFile et le FileWriter dont tu m'as parlé plus haut... après, désolé si j'ai l'air un peu boulet, mais on se change pas :)

n°426792
phnatomass
Je m'empare de ton esprit !!
Posté le 13-06-2003 à 15:28:10  profilanswer
 

Au fait t'as éssayé le code que je t'ai donné

n°426798
pilou51
Posté le 13-06-2003 à 15:31:02  profilanswer
 

vivi et c celui que j'avais au début (sauf qu'il faut changer write en writeChars et enlever flush parceque ça n'existe pas sous RandomAccessFile), qui permet bien de rajouter des trucs en fin de fichier, mais me met ces fichus carrés :(
Merci bcp d'essayer en tt cas... :jap:

n°426805
phnatomass
Je m'empare de ton esprit !!
Posté le 13-06-2003 à 15:34:26  profilanswer
 

Ok.
Mais t'as essayé write(byte [] b);
en appelant la méthode getBytes() sur tes String ?

n°426811
pilou51
Posté le 13-06-2003 à 15:37:04  profilanswer
 

oui, et ça fait des trucs encore plus bizarres, en plus des carrés j'ai des @ et autres caractères spéciaux :)

n°426863
phnatomass
Je m'empare de ton esprit !!
Posté le 13-06-2003 à 16:05:33  profilanswer
 

Voila un exemple de programme qui tourne parfaitement chez moi.
Je ne sais pas si ça ressemble un peu à ce que tu veux faire.

Code :
  1. import java.io.*;
  2. public class Tester
  3. {
  4.    public static final String NEW_LINE = System.getProperty("line.separator" );
  5.    public static void main(String [] argv)
  6.    throws IOException
  7.    {
  8.      RandomAccessFile raf = new RandomAccessFile(new File("test.txt" ), "rw" );
  9.      raf.seek(raf.length());
  10.      for(int minute=0; minute<60; minute+=5){
  11.        int heure =(int) (System.currentTimeMillis()/10000L) % 24;
  12.        raf.write((heure + ":" + minute + NEW_LINE).getBytes());
  13.      }
  14.      raf.close();
  15.    }
  16. }


Message édité par phnatomass le 13-06-2003 à 16:31:35
n°426879
pilou51
Posté le 13-06-2003 à 16:12:35  profilanswer
 

ouiiiiiiiiii ça marche enfin, merci infiniment :D
 
en fait, c t vraiment une connerie et je comprends pas vraiment, j'ai viré le + dans mes write, et séparé en 2 (en faisant 2 fois getBytes() du coup) et là ça marche :)
 
merci pour ta patience aussi  :whistle:  :jap:

mood
Publicité
Posté le   profilanswer
 


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

  Ecriture de String ds un fichier, puis lecture et affichage ds une fen

 

Sujets relatifs
[VBA Excel] Que renvoit open qd l'ouverture du fichier échoue?[C] Problème de lecture dans un fichier
problem effacer contenu d'un fichier puis réécrire dedans...Modifier la police d'une string....
dans quel fichier se trouve le copyright phpBB ?[C#] convertir une chaîne String en Float
affichage de caracteres cryptés a l'écran....[SQL-PHP] affichage page par page
zipper et rassembler des fichier 
Plus de sujets relatifs à : Ecriture de String ds un fichier, puis lecture et affichage ds une fen


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