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
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 36
    Points : 35
    Points
    35
    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 expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    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 sénior
    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
    Points : 23 190
    Points
    23 190
    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 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 619
    Points
    21 619
    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.)

  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 : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    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

  6. #6
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    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 : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    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

  8. #8
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    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