Bonjour,

je suis entrain de développer un logiciel en Java sous Eclipse.

J'ai des fichiers de ce type avec un nombre de ligne qui varie d'un fichier à l'autre:
Code :

"15/02/2012",16,17.0,3.6
"18/02/2012",5,7.4,2.5
"18/02/2012",12,7.6,2.5
...

J'ai essayé 2 méthodes mais je ne suis pas arrivé à m'en servir correctement :
- tokenizer
- split

Pour tokenizer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
private int kTest = 0;
private String bufferComplet[] = new String[30000];
 
public String[] lire(String path)  {
 
	    String ligne = "";
	    String buffer[] = new String[19];
 
	    try {
	    	BufferedReader br = new BufferedReader(new FileReader(path));
	    	ligne = br.readLine();
	        StringTokenizer st = new StringTokenizer(ligne, ",");
 
	        while ((ligne = br.readLine()) != null) {
	            while(st.hasMoreTokens()){
 
	            	bufferComplet[kTest] = st.nextToken();
		        System.out.println("buffer " + kTest + " : " + bufferComplet[kTest]);
	            	kTest++;
	            }
	        }
	        br.close();
	    }
	    catch (Exception e){
	    e.printStackTrace();
	    }
	    return bufferComplet;
	 }
Avec ce code (tokenizer), je récupère à chaque fois la première ligne sans passer à la suivante.

Avec split :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public String lire02 (String path) 
	{
			int FIN_LIGNE = 19;
			StringBuilder sb = new StringBuilder();
			try{
				BufferedReader buff = new BufferedReader(new FileReader(path));
				try {
					String line;
					while ((line = buff.readLine()) != null) {
						sb.append(line).append(FIN_LIGNE);
						count ++;
					}
				} 
				finally {
					buff.close();
				}
			} 
			catch (IOException e) {
				e.printStackTrace();
			}
			return sb.toString();
	}
 
public String[] lire (String path) {
 
			String buffer = lire02(path);
			String[] lignes = buffer.split("\n");
 
			String[] elements = new String[30000];
 
			for(int i=0 ; i<count * 19 ; i++)
			{
				elements = lignes[i].split("\\,");
				System.out.println("elements :" + elements);
			}
			return lignes;
	}
Avec split, rien ne marche. J'obtiens cette erreur :
java.lang.ArrayIndexOutOfBoundsException : 1

Si vous savez comment faire avec une des deux méthodes ou autrement, je veux bien de l'aide.

Bonne soirée.
Merci.