Fichier Texte et StreamTokenizer

cs_Taz1984 Messages postés 47 Date d'inscription lundi 20 juillet 2009 Statut Membre Dernière intervention 13 mars 2013 - 20 juil. 2009 à 16:10
cs_Taz1984 Messages postés 47 Date d'inscription lundi 20 juillet 2009 Statut Membre Dernière intervention 13 mars 2013 - 21 juil. 2009 à 09:23
Bonjour à Tous,
J'ai un fichier texte constitué sous cette forme :

PEL ;ACTICALL ;090624 ;2351 ;090624 ;2351 ;090624;2351 ;FICPOSIT;E ;00000737 ;00804134

Je voudrai récuperer tous les champs entre les deux ; ; jusqu'a la fin de chaque ligne et recommencer pour les lignes suivantes.

public class ReadFile {

    public void File() throws IOException 
    {
    	     
    		FileReader fichier = new FileReader("d:\\uk0recaptrf.F2504300");
            StreamTokenizer entree = new StreamTokenizer(fichier);
          
            entree.nextToken();
          
            
            String s = entree.sval;
            System.out.println(s);
            

            String tableauChaine[];
            tableauChaine= new String[10000];
            
            for(int i=0;i<100;i++)
                {
            	
            	int ttype = entree.nextToken ();
           
            	    //entree.nextToken();
                    
                    tableauChaine[i]= entree.sval;
                    System.out.println(tableauChaine[i]);
                }	   
                
            fichier.close();
    }	


Le probléme ici est que j'ai tenté de mettre un if (ttype==StreamTokenizer.TT_EOL) mais ici je parle de fin de ligne or je ne sais comment lui dire qu'il doit mettre dans le tableau seulement tous les champs entre ; ;.

Merci d'avance pour votre aide.

6 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
20 juil. 2009 à 16:32
Salut,

Tu devrais plutôt lire ton fichier ligne par ligne (avec un BufferedReader) puis découper ta chaîne selon les ";" par un appel à String.split(";").

______________________________________
DarK Sidious
0
cs_Taz1984 Messages postés 47 Date d'inscription lundi 20 juillet 2009 Statut Membre Dernière intervention 13 mars 2013
20 juil. 2009 à 17:16
Merci j'ai utilisé un BufferedReader comme ci dessous
 public void File() throws IOException 
    {
       BufferedReader in = new BufferedReader(new FileReader("d:\\uk0recaptrf.F2504300"));  
       String str ;
       String tableau[];
       tableau = new String[10];
       int i=1;
       while ( (str = in.readLine()) != null) {
    	   str.split(";");
    	   //System.out.println(str);
    	   tableau[i] = str ;
    	   System.out.println(tableau[i]);
    	   i= i+1;
    	   
       
       }
       
       


Voici le résultat de mon tableau :
aaaaaaakkfjg;fkgjfkgjfkj;fkgjfkjgkfj;122222112;kfjgfkjg
ldpdkflpfk
dfmjldfmdfjk
dlmfdkjfmldk
lmfkdmflkdf


J'aurai voulu que chaque case du tableau contienne un élément entre ; ; , j'ai utilisé String.split(";") mais rien ne se produit .
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
20 juil. 2009 à 17:32
Salut,

C'est normal : tu appele le split, mais tu ne fais rien du tableau en sortie...
        while ( (str = in.readLine()) != null) {
    	   String[] splits = str.split(";");
           
           int taille = splits.length;
           for (int j = 0; i < taille; i++) {
       	     tableau[i + j] = splits[j];
           }
           i += j;
       }



______________________________________
DarK Sidious
0
cs_Taz1984 Messages postés 47 Date d'inscription lundi 20 juillet 2009 Statut Membre Dernière intervention 13 mars 2013
20 juil. 2009 à 17:59
Merci cela m'aide beaucoup , j'ai ainsi codée ceci :
 public void File() throws IOException 
    {
       BufferedReader in = new BufferedReader(new FileReader("d:\\uk0recaptrf.F2504300"));  
       String str ;
       String tableau[];
       tableau = new String[15];
       
       
       int i=0; 
       
       while ( (str = in.readLine()) != null) {
    	   String[] splits = str.split(";");
           
           int taille = splits.length;
           for (int j = 0; j < taille; j++) {
       	     tableau[i+j] = splits[j];
       	     
           } 
          
       }
       for( int k = 0 ; k<tableau.length; k++){
    	   System.out.println(tableau[k]);
       }
       
      in.close();


Malheuresement je comprend pas il traite uniquement la premier ligne seulement du fichier .
Voici le fichier :
aaaaaaakkfjg;fkgjfkgjfkj;fkgjfkjgkfj;122222112;kfjgfkjg;
ldpdkflpfk
dfmjldfmdfjk
dlmfdkjfmldk
lmfkdmflkdf




et merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
20 juil. 2009 à 18:07
Salut,

Oui normal, il écrase toujours ce qu'il vient de faire : ajoute un incrément de i dans la boucle de lecture :
i += taille;
______________________________________
DarK Sidious
0
cs_Taz1984 Messages postés 47 Date d'inscription lundi 20 juillet 2009 Statut Membre Dernière intervention 13 mars 2013
21 juil. 2009 à 09:23
Merci beaucoup ca fonctionne.
0
Rejoignez-nous