J'utilise un StreamTokenizer pour faciliter la lecture formatée dans un fichier texte. La classe qui s'occupe de ça est 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
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();
	}
  }
}
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.
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