Publié le 27/08/2010
Auteur axel
Réseaux sociaux
0 partages
0 tweets
0 plus
1 commentaires

Parser un fichier CSV avec StringTokenizer

Le format CSV est un fichier texte dans lequel les valeurs sont délimitées par un caractère, le plus souvent ';'. Ce type de base de donnée est utilisé pour stocker de petites quantités de données, comme par exemple des propriétés de configuration.

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
rouge;#FF0000
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 1 : rouge
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.

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.
avatar hisy

Publié par hisy

le 19/01/2012 à 08:23:59

Merci pour le script mais si un champ text contient un ";" ...

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
java - sources
Mise a jour
27/08/2010
Visualisation
vu 5495 fois
Public
Internaute
Auteur de la publication
Axel
Membre junior
Auteur de 51 articles
|BIO_PSEUDO|
Commentaires récents

Publié par Fobec dans tuto

Je ne maitrise pas du tout WordPress ...
un plugin a l'air sympa http://wordpress.org/extend/plugins/scripts-gzip/, en parcourant le code source, j'ai vu des pistes pour integrer Gzip sous WordPre...

Publié par Roger HENRI dans CMS

Je ne suis pas sûr que cette procédure marche toujours parfaitement à cause du mot
"selstart" qui, chez moi au moins, paraît être capricieux.

Quand je veux lir...

Publié par Alpcom dans java

Salut , juste signaler une petite faute de frappe dans mouseDragged
ce n'est pas int y = p.y - newPos.x;
int y = p.y - newPos.y; !! des comportements curieux apparaissaient sinon merci beaucoup...

Publié par Coll dans java

Excuse moi, mais pourrais tu expliquer un peu plus precisement ce que tu fais lorsque tu convertis en gris je comprends l'idee mais pas ce que chaque action fait precisement et le cacth a la fin. Parc...

Publié par Axel dans java

la position sur mouseDragged a ete corrigee dans l'article.
Merci Alpcom !