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 :
Avec ce code (tokenizer), je récupère à chaque fois la première ligne sans passer à la suivante.
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 split :
Avec split, rien ne marche. J'obtiens cette erreur :
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; }
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.
Partager