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 :

[Débutant] Problème avec le contenu d'un fichier


Sujet :

Entrée/Sortie Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 14
    Points : 7
    Points
    7
    Par défaut [Débutant] Problème avec le contenu d'un fichier
    Bonjour,

    Je souhaite simplement récupérer des chaînes de caractères dans un fichier texte. Le problème est que je récupère plein d'espaces (qui se transforment en carrés dans mon interface) et tout le monde me dit que ce n'est pas normal...

    Peut-être existe-t-il une fonction qui permet de supprimer ces espaces ?

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    String[] tab = new String[10];
     
    FileReader fr = new FileReader("fichier.txt");
    BufferedReader br = new BufferedReader(fr);
    int i = 0;
    String s = br.readLine();
    while (s!=null)
    {
         tab[i] = s;
         i++;
         s = br.readLine();	
    }
    Je devrais récupérer :
    tab[0] = coucou
    tab[1] = bonjour
    tab[2] = salut

    Mais je récupère malheureusement :
    tab[0] = c o u c o u
    tab[1] = b o n j o u r
    tab[2] = s a l u t

    Et je ne sais pas pourquoi !

    Merci d'avance !!!

  2. #2
    Membre du Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2005
    Messages : 29
    Points : 43
    Points
    43
    Par défaut
    j'ai repris ton code. Je l'aii testé et ca marche bien.
    Comment fais-tu pour afficher ton résultat ?

    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
    String[] tab = new String[10];
    try {
    FileReader fr = new FileReader("fichier.txt");
    BufferedReader br = new BufferedReader(fr);
    int i = 0;
    String s = br.readLine();
    while (s!=null)
    {
         tab[i] = s;
         i++;
         s = br.readLine();
    }
    for(i=0;i<tab.length;i++) {
        System.out.println(tab[i]);
    }
    }catch(Exception e) {
    }
    done avec
    #more fichier.txt
    coucou
    bonjour
    salut
    #

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    java test
    coucou
    bonjour
    salut
    null
    null
    null
    null
    null
    null
    null

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    En fait, je dois programmer un convertisseur de devises avec l'architecture MVC et en client/serveur.

    C'est donc le client qui fait une demande de service (recevoir la liste des devises) et le serveur qui lui donne après l'avoir récupéré dans un fichier.

    Après avoir récupérer le contenu du fichier dans tab, je l'envoie au à la classe protocole serveur, qui l'envoie à la classe transport, qui l'envoie à la classe protocole client qui l'envoie pour finir à la classe application client...

    Et le contenu du tableau est ensuite affiché dans une JComboBox.

    Je ne comprends vraiment pas pourquoi ça marche parfaitement chez toi et pas chez moi ???

    Snif ! Merci pour ton message

  4. #4
    Membre du Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2005
    Messages : 29
    Points : 43
    Points
    43
    Par défaut
    si tu fais afficher la lchaine de caractère avant de la mettre dans ton tableau il y a bien des espaces ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    oui oui, ça ne vient pas de l'affichage dans la JComboBox, ça vient bien de ce qu'il récupère dans le fichier.

    Peut-être que ça peut venir du système d'exploitation, non ?
    Moi j'ai XP ...

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 104
    Points : 140
    Points
    140
    Par défaut
    Peut-être que le fichier contient des caractères encodés d'une façon qui ne correspond pas au CharSet par défaut de Java sur son ordinateur.
    Dans ce cas, il faudrait préciser le CharSet à utiliser lors de la création du Reader.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Merci pour cette réponse ! Mais j'ai cherché un peu et je ne vois pas trop comment faire...

    Si vous pouviez m'aider, ça serait très cool !

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 104
    Points : 140
    Points
    140
    Par défaut
    Il faudrait remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FileReader fr = new FileReader("fichier.txt");
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    String charSet = "UTF-16";
    InputStream is = new InputStream("fichier.txt");
    InputStreamReader fr = new InputStreamReader(is,charSet);
    Pour la valeur de charSet, à défaut de connaître l'encodage utilisé pour le fichier, il faudra faire des essais.
    Consultes http://java.sun.com/j2se/1.5.0/docs/...t/Charset.html et essaie les différentes possibilités en commençant par "UTF-16".

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup !!! Ca marche !!!

    Je te dois beaucoup car je n'aurais jamais trouvé comment faire sans ton aide !

    Mais dis-moi, comment ce fait-il que je sois obligée de faire ça ? Est-ce lié au système d'exploitation ? Peut-on l'éviter ?

    Merci encore !

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 104
    Points : 140
    Points
    140
    Par défaut
    Un fichier qui contient du texte est fait d'octets. Comme un caractère, ce n'est pas la même chose qu'un octet (l'ensemble des langues du monde rassemble plus de 256 caractères), il faut convertir les octets en caractères.

    Quand on emploie un Reader, Java convertit les octets en caractères en employant un Charset par défaut qui dépend de la plate-forme. C'est souvent iso-8859-1 (256 caractères, y compris les caracères accentués français, stockés chacun sur un seul octet) ou UTF-8 (tous les caractères du monde stockés sur un ou plusieurs octets).

    Certains logiciels stockent leurs données en employant un Charset qui n'est pas celui que Java utilise par défaut. Dans ce cas, il faut préciser le Charset à Java via un InputStreamReader pour que celui-ci effectue la bonne conversion.

    http://java.sun.com/j2se/1.5.0/docs/...ileReader.html.

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

Discussions similaires

  1. [Débutant] Problème avec les fichiers
    Par van der zahir dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 08/10/2010, 23h00
  2. [Débutant] Problème avec Dev-Cpp 4.9.9.0
    Par P4Pi dans le forum Dev-C++
    Réponses: 7
    Dernier message: 16/01/2010, 16h48
  3. Réponses: 3
    Dernier message: 25/10/2007, 21h57
  4. [débutant] problème avec un "if"
    Par pingoui dans le forum Langage
    Réponses: 10
    Dernier message: 11/08/2004, 09h46
  5. [débutant] Problèmes avec CRegKey
    Par Pedro dans le forum MFC
    Réponses: 4
    Dernier message: 10/11/2003, 15h28

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