Problème de logique-flux

Problème de logique-flux - Java - Programmation

Marsh Posté le 04-05-2010 à 03:27:48    

Hello à tous.
 
Alors voilà, je cherche à créer un script en java pour récupérer une partie d'un fichier texte, délimité par les deux balises : tagd et tagf.
 
Voila mon code. Le problème, c'est qu'il crée bien le fichier, mais que je le retrouve vide.
 
Donc sans doute un problème "logique" dans ce code...
 
J'ai pas mal cherché, bidouillé, mais là j'avoue que je suis un peu perdu et qu'un coup de main ne serait pas de refus...
 
Merci d'avance à tous ceux qui se pencheront sur le problème.
 
 

Code :
  1. while(flot!=-1){ // TQ pas fin du fichier  
  2.    flot = readin2.read();
  3.    lu=(char)flot;
  4.    if(lu==tagd.charAt(0)){
  5.     for (i=1; i<(tagd.length()) ; i++) {
  6.      flot = readin2.read();
  7.      lu=(char)flot;
  8.      if(lu==tagd.charAt(i)){
  9.       stocker=true;
  10.      }else{
  11.       stocker=false;
  12.      }
  13.     }
  14.     if(stocker==true){
  15.      if(lu==tagf.charAt(0)){
  16.       for(i=1; i<(tagf.length()) ; i++) {
  17.        if(lu==tagf.charAt(i)){
  18.         stopstocker=true;
  19.        }else{
  20.         stopstocker=false;
  21.         if(stocker==true){
  22.          output.write(lu);
  23.          output.flush();
  24.         }
  25.        }
  26.       }
  27.      }
  28.     }
  29.    }

Reply

Marsh Posté le 04-05-2010 à 03:27:48   

Reply

Marsh Posté le 04-05-2010 à 10:01:30    

Il manquerait pas un close ?

Reply

Marsh Posté le 04-05-2010 à 10:06:02    

A mon avis tu n'utilise pas ton boolean stopstocker
Tu peux aussi utiliser  un PushBackReader pour ce type de problématique.

Reply

Marsh Posté le 04-05-2010 à 12:07:46    

Bonjour.
 
Oui Deamon, il manquait le output.flush() et le close(), merci beaucoup.
 
phnatomass, oui, MERCI. C'est exactement la classe qu'il me faut apparemment. Et je vais m'en servir pour d'autres choses ;).
 
Mais j'ai encore un problème. Je n'arrive pas à construire :s.
 

Code :
  1. try{
  2.   FileReader readin2 = new FileReader(in);
  3.   BufferedReader input = new BufferedReader(readin2);
  4.   FileWriter writeout = new FileWriter(out,true);
  5.   BufferedWriter output = new BufferedWriter(writeout);
  6.   flot=readin2.read(); //on lit le flot. si flot =-1 fin du fichier  
  7.   char car=(char)flot;
  8.   char lu=(char)flot;
  9.   PushbackInputStream reader;
  10.   char c;
  11.   boolean debutOk = false;
  12.   while( ( c = reader.read() ) != -1 ){
  13.    if( c == tagD.charAt( 0 ) ){
  14.     debutOk = true;
  15.     i = 1;
  16.     for( ; i < tagD.length() ; ++i ){
  17.      c = reader.read();
  18.      if( c != tagD.charAt(i) || c == -1 ){
  19.       debutOk = false;
  20.       for( ; i >= 0 ; --i ){
  21.        reader.unread( tagD.charAt( i ) );
  22.       }
  23.       break;
  24.      }
  25.     }
  26.    }
  27.    while( debutOk )
  28.    {
  29.     if( c == tagF.charAt( 0 ) )
  30.     {
  31.      i = 1;
  32.      for( ; i < tagF.length() ; ++i )
  33.      {
  34.       c = reader.read();
  35.       if( c != tagF.charAt( i ) || c == -1 )
  36.       {
  37.        debutOk = false;
  38.        for( int k = 0 ; k < i ; ++k )
  39.        {
  40.         output.write( tagF.charAt( k ) );
  41.        }
  42.        if( c != -1 )
  43.        {
  44.         output.write( c );
  45.        }
  46.        break;
  47.       }
  48.      }
  49.     }
  50.     else
  51.     {
  52.      output.write( c );
  53.     }
  54.    }
  55.   }
  56.   output.flush(); //on envoie le buffer dans le fichier de destination ici:"C:\\monfichier.txt"  
  57.   output.close(); //on ferme le buffer et le filereader flotlecture  
  58.   readin.close();
  59.  }
  60.  catch (IOException e) {
  61.   System.out.println(" erreur :" + e.toString());
  62.  }


 
Ligne 14 :'(


Message édité par jmlaguiness le 04-05-2010 à 12:08:21
Reply

Sujets relatifs:

Leave a Replay

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