Analyser un fichier avec StringTokenizer
Dans l'exemple, la fonction StringTokenizer sépare les données par rapport à un délimiteur. L'analyse fonctionne sur le principe de l’évènement, c-a-d le contenu du fichier est analysé pas à pas.Comment marche la fonction StringTokenizer ?
Pour illustrer le fonctionnement de la fonction et l'analyse d'un texte avec StringTokenizer, prenons le fichier CSV suivant, nommé monfichier.csv
vert;#008000
bleu;#0000FF
Ci-dessous vous trouverez la class permettant de lire le contenu du fichier. Le code source se trouve la le main car il est difficile de définir une class que l'on peut refactoriser dans ce cas précis.
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Afficher un fond degrade dans un JPanel
* Parser un fichier CSV avec StringTokenizer
* Axel 2010
*/
public class CSVParser {
public static void main(String[] args) {
try {
String csvFile = "C:/monfichier.csv";
String delimiter = ";";
String line = null;
StringTokenizer strToken = null;
BufferedReader bufferReader;
int lineID = 0;
int fieldID = 0;
//Ouvrir le fichier CSV
bufferReader = new BufferedReader(new FileReader(csvFile));
//parcourir les lignes du fichier CSV
while ((line = bufferReader.readLine()) != null) {
lineID++;
//Parcourir les champs séparés par delimiter
strToken = new StringTokenizer(line, delimiter);
while (strToken.hasMoreTokens()) {
fieldID++;
System.out.println("Ligne " + lineID
+ " / champs " + fieldID
+ " : " + strToken.nextToken());
}
fieldID = 0;
}
} catch (IOException ex) {
Logger.getLogger(CSVParser.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
L'éxecution du code source analyse le contenu du fichier monfichier.csv. Pour l'exemple, à chaque fois qu'une valeur est trouvée, les données sont ajoutées à la console:
Ligne 1 / champs 2 : #FF0000
Ligne 2 / champs 1 : vert
Ligne 2 / champs 2 : #008000
Ligne 3 / champs 1 : bleu
Ligne 3 / champs 2 : #0000FF
Le format de données CSV est basique et simple à éditer. La fonction StringTokenizer() permet de parser rapidement le fichier et d'extraire les informations dont on a besoin.