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

Langage Java Discussion :

Problème avec '\n' lors de l'écriture dans un fichier


Sujet :

Langage Java

  1. #1
    Membre averti
    Inscrit en
    Août 2010
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 36
    Par défaut Problème avec '\n' lors de l'écriture dans un fichier
    Salut les amis,
    j'ai un problème avec le caractère spécial '\n', voici mon pb :
    String x = new String("hello world j'aime l'informaique");
    x=x.replace(" ","\n");
    Quand je fais : System.out.println(x);
    ça m'affiche ceci :
    helllo
    world
    j'aime
    l'informatique

    mais au contraire quand j'écris cette chaine de caractères dans un fichier je trouves ceci : helloworldj'aimel'informaique
    j'ai essayé le même truc avec '\r' et ça donne toujours le même résultat ??!!
    Prière de m'expliquer la cause et comment devrais je résoudre ce pb et Merci d'avance.

  2. #2
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 341
    Par défaut
    Bonjour,

    quand vous dites
    dans un fichier je trouves ceci : helloworldj'aimel'informaique
    par quel moyen arrivez-vous à savoir ce qu'il y a dans le fichier ?
    Vous l'ouvrez avez Bloc-note ?
    Ou bien vous le chargez à l'aide d'un autre code JAVA, et parcourez les octets récupérés ?
    Car cela m'étonnerais que les octets '\n' soient perdus lors de l'opération sur le fichier.

    @ bientôt ....

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    La fin de ligne dépend de l'OS, et il correspond à la valeur retournée par System.getProperty("line.separator")...


    a++

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Certains programmes qui lisent les fichiers textes veulent que les fins de lignes soient en \n. D'autres qu'elles soient en \r\n. Et la plupart acceptent n'importe lequel.

    Bref, utilise un autre programme pour lire tes fichiers et tout ira bien.

    (La fin de ligne de dépend pas de l'OS mais du programme qui lit le fichier. Internet s'est démocratisé depuis cette époque ancienne.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Bonjour,

    Déjà il faudrait savoir comment c'est écrit dans le ficher.. un bout de code aiderait.

    \n est interprété automatiquement par java pour être le retour à la ligne correspondant à l'OS donc je pense que le problème n'est pas lié au \n, ni au line.separator mais à une simple bourde dans le code.

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Non il n'y a pas de traitement particulier sur un \n.
    Par contre certains éditeurs avancés peuvent gérer cela.

    Si tu écris "A\nB" dans un fichier et que tu ouvres sous Windows avec un éditeur simple (notepad par exemple), tu n'auras pas de retour à la ligne entre A et B...


    Après le comportement peut être différent selon l'éditeur ou la console que tu utilises. Mais il faut normalement utiliser "line.separator" pour générer un fichier "correct" pour le système hôte.

    a++

  7. #7
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Incroyab' j'étais persuadé avoir lu quelque part que justement le \n était suffisant et qu'il était inutile d'utiliser le line.separator .. mais à fouiner ça et là sur le net, il semblerait bien que tu ai raison Adi .. au temps pour moi donc.

    /me tente une pirouette desespérée:

    N'empêche que le code peut être en cause si un BufferedWriter est utilisé et que des write(line + "\n") sont fait au lieu d'utiliser la méthode newLine

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  8. #8
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bulbo Voir le message
    Incroyab' j'étais persuadé avoir lu quelque part que justement le \n était suffisant et qu'il était inutile d'utiliser le line.separator ..
    Tu confonds peut-être avec le %n du printf()/format() qui lui correspond bien au line.separator.

    Citation Envoyé par bulbo Voir le message
    N'empêche que le code peut être en cause si un BufferedWriter est utilisé et que des write(line + "\n") sont fait au lieu d'utiliser la méthode newLine
    Ben oui c'est ce qu'il fait !

    La plupart des méthodes de l'API qui écrivent une fin de ligne utilisent line.separator (println(), newLine(), printf/format("%n"),...)

    Donc si tu utilises ces méthodes aucun problème... sinon


    a++

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

Discussions similaires

  1. Problème lors de l'écriture dans un fichier texte
    Par Iron-Avenger dans le forum Débuter
    Réponses: 8
    Dernier message: 28/04/2013, 11h13
  2. Réponses: 2
    Dernier message: 25/09/2009, 12h56
  3. Problème lors de l'écriture dans un fichier.
    Par captainflex dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 16/05/2007, 13h42
  4. Erreur E/S 32 lors de l'écriture dans un fichier text.
    Par yosthegost dans le forum Delphi
    Réponses: 6
    Dernier message: 01/06/2006, 11h45
  5. Passer à la ligne lors de l'écriture dans un fichier
    Par hams dans le forum Assembleur
    Réponses: 4
    Dernier message: 17/04/2005, 19h25

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