IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Lire un fichier .csv sous unix


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 102
    Points : 58
    Points
    58
    Par défaut Lire un fichier .csv sous unix
    Quelle est la recette "magique" pour lire un fichier csv à la fois sous windows et sous Unix.

    Je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    BufferedReader reader =new BufferedReader(new FileReader(file));
    String line =null;
    while ((line = reader.readLine()) != null) {
     
    	String[] parts = line.split("\t");
    	int i = 0;				
    	String value = parts[i++];
    	System.out.println(value);
     
    }
    Sous windows, pas de problème sur les caractères spéciaux.
    Sous Unix, catastrophe!!

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Pour commencer tu ne travailles pas ici avec un fichier csv (la délimitation des colonnes en CSV se fait au moyen d'une virgule comme l'indique le nom du format: comma separated values).

    Essaies de remplacer \t par \p{Space}, celà découpera selon la les espaces blancs quel qu'ils soient (\t, \n, \x0B, \f, \r)
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 102
    Points : 58
    Points
    58
    Par défaut
    soit! mais avec des , des ; ou n'importe quoi, j'aurai le même problème pas de caractères spéciaux.

  4. #4
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Quels sont tes encodages par défaut (sur Windows et sur Linux) ? Et l'encodage du fichier source ?

    EDIT : Tiens un bug, impossible de supprimer mon premier message

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 102
    Points : 58
    Points
    58
    Par défaut
    Voilà une piste à mon avis.
    L'encodage par défaut des OS (c'est la seul chose qui change)

    Donc cet encodage par défaut, c'est quoi?
    un encodage de l'OS?
    de la JVM de l'OS?

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 102
    Points : 58
    Points
    58
    Par défaut
    bon en faisant:
    file <mon fichier> sous unix, on se rend compte de l'encodage du fichier soit ISO-8859-1

    Donc il faut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    BufferedReader reader = new BufferedReader(new InputStreamReader(
    					new FileInputStream(file), "ISO-8859-1"));
     
    String line =null;
    while ((line = reader.readLine()) != null) {
     
    	String[] parts = line.split("\t");
    	int i = 0;				
    	String value = parts[i++];
    	System.out.println(value);
     
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lire un fichier csv ligne à ligne sous Talend
    Par NFHnv dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 13/03/2015, 14h57
  2. Réponses: 2
    Dernier message: 13/09/2014, 22h28
  3. [Excel] Convertir un fichier xls en csv sous UNIX
    Par Tsuful dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 14/04/2006, 11h12
  4. Lire un fichier CSV/XLS
    Par Doneve dans le forum ASP
    Réponses: 3
    Dernier message: 04/10/2005, 17h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo