Entrees sorties avec un fichier

Entrees sorties avec un fichier - Java - Programmation

Marsh Posté le 14-08-2005 à 18:13:09    

Salut à tous  :)  
un dimanche après midi à nice et moi je fais du java   :sarcastic:  
 
Je programme un soft qui récupère des données dans un fichier et les réécrit dans un second fichier avec quelques modifications.  
Voici un extrait du fichier que je dois lire.  
 
11 3 32 0 7 40  
5520 1 1 1 5 5  
32* COFI v.2 IDEAS v.11 *  
07/13/05 VVPR 1 0 0  
7 5 20 5 138 0 1 1  
40 0.6978044820836787E+10 0.1238774153323844E+11 0.1901403936761112E+11  
0.3445260201620660E+11 0.4048589907678004E+11 0.6673256768859634E+11  
0.1133983935650789E+12 0.1266392523039663E+12 0.2253733675547690E+12  
0.3181668544154566E+12 0.5255469213822878E+12 0.6458133052264467E+12  
0.7453467372541699E+12 0.1097179188940539E+13 0.1184914291018450E+13  
0.1680306774352798E+13 0.1888042254866058E+13 0.2418814107784721E+13  
0.2931585857945411E+13 0.3329695498910833E+13  
5520 0.4877913475036621E+01 0.0000000000000000E+00 0.4864388942718506E+01  
0.0000000000000000E+00 0.4849582672119141E+01 0.0000000000000000E+00  
0.4833709239959717E+01 0.0000000000000000E+00 0.4816733837127686E+01  
0.0000000000000000E+00 0.4793504714965820E+01-0.3685846924781799E+00  
0.4763874053955078E+01-0.3189862668514252E+00 0.4729751586914063E+0
....
 
Voilà où j'en suis. J'ai récupéré la première valeur de la seconde ligne (5520 en rouge gras) car elle code un peu plus loin le fichier.
Jusque là pas de problèmes.
Premier problème :  :??:    
je souhaite ensuite aller directement au suivant 5520 (rouhe gras aussi, de la 13ème ligne) ce n'est pas toujours la 13ème ligne ...
comment de faire une boucle genre while qui lit tous les token jusqu'à arriver au token "5520".
Deuixème problème:    :??:  
une fois que je suis au niveau du deuxième 5520 du fichier. je dois réécrire toutes les valeurs qui suivent avec la modification suivante : je dois intervertir les valeurs deux à deux. Autrement dit, la deuxième valeur devient la première, la première devient la seconde. La troisième devient la quatrième valeur et la quatrième devient la troisième et ainsi de suite...
je pensais en fait créer un vecteur comportant toutes les valeurs de deux lignes. J'aurais donc un vecteur de 6 éléments et donc pour l'écriture ce sera plus simple de travailler avec les indices. et je fais une boucle avec cette idée jusqu'a la fin du fichier.
NB: le nombre de valeurs est un nombre pair  
 
Voici le code que j'ai commencé (pas grand chose)
j'ai juste récupérer le 5520

Code :
  1. public void parse_vvp4() {
  2. int NVProp;
  3. Vector valeur = new Vector(6);
  4. String valeur1 = "";
  5. BufferedWriter bw;
  6. try {
  7. FileReader f_r = new FileReader(f_atila);
  8. StreamTokenizer st = new StreamTokenizer(f_r);
  9. BufferedReader br = new BufferedReader(new FileReader(f_atila));
  10. int moment = 0;
  11. st.wordChars('0', '9');
  12. st.wordChars('-', '-');
  13. st.wordChars('.', '.');
  14. st.wordChars('+', '+');
  15. for (int i=0; i<6; i++) {
  16. st.nextToken();
  17. }
  18. st.nextToken();
  19. NVProp = (int)st.nval;
  20. System.out.println(NVProp);
  21. st.nextToken();
  22. //System.out.println(st.nval);
  23. while (st.nextToken() != StreamTokenizer.TT_EOF) {
  24.   switch (moment) {
  25. case 0:
  26.    if (st.nval == NVProp) {// NE MARCHE PAS  
  27.   //System.out.println(st.nval);
  28.   JOptionPane.showMessageDialog(null," NVProp",
  29.   "Erreur",JOptionPane.ERROR_MESSAGE);
  30.   moment = 1;
  31.   break;
  32. }
  33. else {
  34.   moment = 0;
  35.   JOptionPane.showMessageDialog(null,"NVProp else",
  36.   "Erreur",JOptionPane.ERROR_MESSAGE);
  37. }
  38.   }//fin switch
  39. }//fin while  
  40. }//fin try
  41. catch (Exception ex) {
  42.      JOptionPane.showMessageDialog(null,
  43.       "Erreur lors de la lecture vvp2 du fichier " +
  44.       f_atila.getName(),"Erreur",JOptionPane.ERROR_MESSAGE);
  45.    System.exit(0);
  46.    }
  47. }//fin parse_vvp4


 
Merci beaucoup pour votre aide  :jap:

Reply

Marsh Posté le 14-08-2005 à 18:13:09   

Reply

Marsh Posté le 14-08-2005 à 18:20:15    

tu peux arrêter le flood avec tes 36 topics

Reply

Marsh Posté le 14-08-2005 à 18:49:33    

désolé comme c'est un nouveau et gros problème je pensais qu'il fallait ouvrir un  nouveau pour que de nouvelles personnes puissent le lire
 :ange:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed