Envoyé par
Shidate Kunan
- Si je rentre plusieurs lignes, il ne semble ne pas prendre toutes les lignes. En tout cas, pas la première d'après les quelques tests que j'ai effectué. Je ne sais pas si c'est normal ou si quelque chose est à modifier dans mon programme, mais il ne sort pas la première ligne, sûr.
Oui, il ne prend pas la première ligne, parce que dès qu'on entre dans le while, on redemande une nouvelle saisie, sans avoir écrit la première.
Il suffit de faire (d'où l'ordre des 2 lignes dans mon algorithme précédent) :
1 2 3 4 5 6 7 8
| while (! texte.equals("") ) { // tant que texte ne contient pas une chaine vide
pw.append(texte); // on écrit dans le fichier la chaine qui est actuellement dans texte
pw.println(); // on écrit un passage à la ligne dans le fichier
texte = sc.nextLine(); // on redemande une nouvelle chaine (qui sera testée par la condition du while() lors du bouclage
} |
Envoyé par
Shidate Kunan
- Encore une fois, je ne sais pas si c'est normal, ni si c'est réellement demandé par mon exercice, mais si je tente de recompiler le programme, et que je rentre le même nom de fichier que précédemment, que j'écris quelque chose dans ce fichier via la console, ce qui a été écrit précédemment est écrasé par ce que je viens d'écrire. Est-ce normal et surtout, est-ce améliorable ?
C'est normal : c'est le comportement de base. On réécrit toujours le fichier. On peut modifier ce comportement par défaut, en utilisant le paramètre append lors de la création du FileWriter, en le mettant à true, pour ajouter à la suite du fichier :
new FileWriter(fichier, true)
A noter, que quand on lit le fichier, bien sûr que ça ne supprime pas son contenu. Donc si on veut programmer un éditeur, on n'utilisera pas append : on lira le fichier, on affichera toutes les lignes, qui seront modifiées (ou pas), avec des nouvelles lignes ajoutées, et on réécrira tout en mode append false évidemment (ce que fait le constructeur de FileWriter sans argument append).
Partager