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 :

[Débutant] Problème BufferedWriter


Sujet :

Langage Java

  1. #1
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Par défaut [Débutant] Problème BufferedWriter
    Bonjour a tous
    j espere etre dans la bonne section

    j ai un leger petit souci avec ce bout de code


    try
    {
    FileWriter fw=new FileWriter("nomFichier.txt");
    BufferedWriter bw= new BufferedWriter(fw);
    bw.write("nom");
    bw.newLine();

    /*s represente un petit texte avec des sauts de lignes*/
    String s=this.liste.Afficher ();
    bw.write(s);
    bw.newLine();
    bw.close();
    }
    catch (Exception e)
    { System.out.println("Erreur "+e);}

    le souci, c est que les sauts de ligne du String s donne
    quelque chose de ce style dans le fichier .txt

    nom᤺prenom᤺date᤺mariage᤺travail᤺adresse᤺codepostal᤺

    Et moi, je voudrais que ca aille à la ligne
    donc si quelqu un saurait m'eclairer
    par contre, je suis debutant, donc allez y doucement
    pour les explications

    merci d avance

  2. #2
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 254
    Par défaut
    bw.write("nom\n");

  3. #3
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Par défaut
    Citation Envoyé par Mister Nono
    bw.write("nom\n");
    merci de ta reponse
    mais je crois que tu n as pas bien compris mon problème


    A defaut de mon probleme precedent quelqu un saurait comment
    faire pour tester quelque chose comme ca :


    String s="une longue phrase" ;
    if ( s.charAt(index i) == 'UN SAUT DE LIGNE' )

  4. #4
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 254
    Par défaut
    if ( s.charAt(index i) == '\n' )

  5. #5
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Par défaut
    c'est ce que j'ai essayé
    mais ca n'a pas l'air de marcher super ...
    a moins que ca vienne de moi ...


    for(int i=0;i<s.length();i++){
    if(s.charAt(i)=='\n'){
    bw.newLine();
    s=s.substring(i+1);
    }
    else bw.write(s);
    }
    s represente ma chaine

  6. #6
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 254
    Par défaut
    Les caractères retour ligne (\r), saut de ligne (\n), tabulation (\t)... sont des caractères non imprimables.

    Si tu désire connaître précisément le caractère retourné (ce qui te permettra de faire le test après) cast le en int et tu aura sa valeur en décimal.

    Enfin tu pourras en regardant le contenu d'une table ASCII connaître le caractère à tester.

    Et si tu n'as pas de table ASCII sous la main, tu fais le test sur la valeur décimale, mais cela t'oblige à faire un cast en int de chacun de tes caractères à tester.

    A+

  7. #7
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Par défaut
    desolé, mais je n ai pas tout suivi ...
    c est quoi que je dois caster ?
    et en prenant mon code precedent,
    c est quoi que je dois modifier ?

    sorry, je debute

  8. #8
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 254
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(s.charAt(i)=='\n')
    Il semble que ce n'est pas le caractère \n qu'il faut tester et celui-ci est un caractère non imprimable (non visible).

    Et bien cast chaque caractère de la chaine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int valeur = (int) s.charAt(i);
    System.out.println(valeur);
    Et enfin tu connaîtras la valeur ASCII du caractère de retour ligne et donc tu pourra la tester.

    Mais cela m'étonne vraiment qu'il ne s'agisse pas du \n (qui lui aussi a une valeur ASCII dont je ne me rappelle pas de mémoire).

    A+

  9. #9
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Par défaut
    oki, merci bien pour tes explications completes
    je testerai dès que j ai le temps

  10. #10
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Par défaut
    voilà, je viens d essayer
    et il semblerait que ce soit 10
    donc j ai fait :

    for(int i=0;i<s.length();i++){
    if(s.charAt(i)==10){
    bw.newLine();
    s=s.substring(i+1);
    }
    else bw.write(s);
    }
    mais ca n a toujours pas l air de marcher

  11. #11
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 254
    Par défaut
    if(((int)s.charAt(i))==10)

    Essaie cela.

  12. #12
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 254
    Par défaut
    Cela serait bien de mettre le code de ta classe car là je ne comprends pas.

    Le caractère de numéro ASCII décimal 10 corrspond bien au caractère LF : Line Feed http://big.chez.com/cosmos2000/Nombres/ASCII.html

    Donc le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(s.charAt(i)=='\n')
    ... devrait fonctionner.

    A+

  13. #13
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Par défaut
    ce qui est surprenant
    c'est que ce problème existe seulement avec le blocnote
    Lorsque j ouvre mon fichier avec le wordpad, notepad++
    le saut de ligne est fait meme sans le code sur leque je m embete
    etrange, etrange

    quant a mon code, je te l aurai bien passé, mais il y a une dizaine de class

    pour plus de details, la chaine s est une chaine renvoyée par
    une methode comportant des sauts de ligne =>

    nom
    prenom
    blabla
    blabla
    etc...

  14. #14
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 820
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 820
    Par défaut
    Citation Envoyé par Angelina007
    ce qui est surprenant
    c'est que ce problème existe seulement avec le blocnote
    Lorsque j ouvre mon fichier avec le wordpad, notepad++
    Tous ces programmes n'interprète pas les \n de la même manière... sous windows, un saut de ligne, c'est \r\n (et \n\r sous DOS! ... sous unix, c'est \n seul... sous mac, \r tout seul). Si il n'y a qu'un \n, wordpad et notepad++ arrivent à piger que c'est un saut de ligne, mais pas le bloc-note.

    Citation Envoyé par Angelina007
    pour plus de details, la chaine s est une chaine renvoyée par
    une methode comportant des sauts de ligne =>
    Il serait intéressant de savoir comment sont créés ces sauts de ligne. Si c'est un \n codé en dur, il manque un caractère pour que ça passe nickel sous windows.
    Il vaut mieux utiliser le Property line.separator pour être sûr de coder les sauts de ligne comme il faut sur la plate-forme utilisée.
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  15. #15
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Par défaut
    merci, j en apprends beaucoup

    mes sauts de lignes sont des "\n"
    par contre, le System.out.println() aussi saute des lignes
    est ce que \n = System.out.println()


    je vais chercher comment utilser le "Property line.separator"
    et je m empresse d essayer


    merci

  16. #16
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Par défaut
    hééééééééééééé
    je viens de faire \n\r dans le string s
    il y a bien le saut de ligne maintenant
    mais ce qui me gene, ce sont les petits carré qui veulent pas partir

  17. #17
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 820
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 820
    Par défaut
    Citation Envoyé par Angelina007
    hééééééééééééé
    je viens de faire \n\r dans le string s
    il y a bien le saut de ligne maintenant
    mais ce qui me gene, ce sont les petits carré qui veulent pas partir
    \n\r c'est pour DOS... fais \r\n plutôt...

    Enfin........... ça dépend de ce que tu appelles "faire dans le string"!
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  18. #18
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Par défaut
    Un GRAND MERCI pour avoir pris le temps de bien m expliquer
    en detail ce que signifiait chaque chose
    en tout cas, ca marche a merveille grace au line.separator
    et plus besoin de ma fonction bizarre

    merci encore

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

Discussions similaires

  1. Proble avec un vhosts sous Apache (Mandrake 10.1)
    Par __fabrice dans le forum Apache
    Réponses: 2
    Dernier message: 27/05/2005, 14h11
  2. Aide sur la RS 232
    Par Andr0 dans le forum C
    Réponses: 5
    Dernier message: 12/04/2005, 14h58
  3. Proble capture direct Show
    Par liliemumue dans le forum DirectX
    Réponses: 3
    Dernier message: 13/12/2004, 22h04
  4. Réponses: 2
    Dernier message: 05/10/2004, 23h43
  5. ListView->Items->Clear() !!! Qques probl de perf
    Par Nicolas_a69 dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/08/2002, 12h49

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