J'utilise un StreamTokenizer pour faciliter la lecture formatée dans un fichier texte. La classe qui s'occupe de ça est la suivante :
J'ai surtout besoin de lire des float et des int. Le problème est que dans un fichier contenant une série de float, certains sont écrits comme ça : 9.986759687308222e-05 mais lu par JAVA comme 9.98676.
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
38 class Lecteur { private StreamTokenizer st ; public Lecteur (String fichier) throws Throwable { st = new StreamTokenizer ( new BufferedReader ( new FileReader (fichier))) ; } public int lireInt () throws Throwable { st.nextToken() ; return (int) st.nval ; } public double lireDouble() throws Throwable { st.nextToken() ; return (double) st.nval ; } public float lireFloat() throws Throwable { st.nextToken() ; return (float) st.nval ; } public String lireString () throws Throwable { st.nextToken() ; return st.sval ; } public void skip(){ try { st.nextToken(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
Pourtant, un code C utilisant fscanf ne pose pas ce problème. Existe-t-il une solution simple en JAVA pour rectifier ça ou dois-je prévoir de faire avec autre chose ?
Autre question, avec certains fichier, mais pas tous, StreamTokenizer semble prendre les retours à la ligne comme tokens et c'est assez gênant. Un moyen pour éviter ça ?
Merci d'avance
Partager