Stream Tokenizer - Lecture formatée
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:
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 ;)