95 votes

Comment ajouter une nouvelle ligne de texte à un fichier existant en Java ?

Je voudrais ajouter une nouvelle ligne à un fichier existant sans effacer les informations actuelles de ce fichier. En bref, voici la méthodologie que j'utilise actuellement :

Writer output;
output = new BufferedWriter(new FileWriter(my_file_name));
output.append("New Line!");
output.close();

*Le problème avec les lignes ci-dessus est simplement qu'elles effacent tout le contenu de mon fichier existant puis ajoutent le texte de la nouvelle ligne. S'il vous plaît, toutes les suggestions sont très appréciées !

L'objectif final est d'ajouter du texte à la fin du contenu d'un fichier sans rien effacer ni remplacer].

Merci d'avance pour votre aide !

131voto

Mario Fernandez Points 8974

vous devez ouvrir le fichier en mode append, ce qui peut être réalisé en utilisant la fonction FileWriter(String fileName, boolean append) constructeur.

output = new BufferedWriter(new FileWriter(my_file_name, true));

devrait faire l'affaire

2 votes

Merci beaucoup ! S'il vous plaît, y a-t-il un moyen d'ajouter (" \n ") à la fin de chaque sortie ? Comme vous le savez, il ajoute tout sur une seule ligne en ignorant mon " \n " s'échappe !

10 votes

BufferedWriter a un newLine() méthode. Vous pouvez l'utiliser, ou utiliser une PrintWriter à la place, qui fournit un println() méthode

2 votes

Merci ! mais pour une raison bizarre, lorsque j'essaie d'utiliser la méthode : output.newLine() | n'existe pas dans la liste des méthodes. J'utilise NetBeans 6.9. Toutes les autres méthodes existent. Savez-vous quelle pourrait être la cause de ce problème ?

28voto

Lukasz Points 9471

La solution avec FileWriter fonctionne, mais vous n'avez pas la possibilité de spécifier l'encodage de sortie, dans ce cas l'encodage par défaut de la machine sera utilisé, et ce n'est généralement pas UTF-8 !

Donc, au mieux, utilisez FileOutputStream :

    Writer writer = new BufferedWriter(new OutputStreamWriter(
        new FileOutputStream(file, true), "UTF-8"));

1 votes

N'oubliez pas de fermer FileOutputStream

1 votes

Cette solution résout le problème de l'ajout d'un fichier existant en utf-8.

13voto

Stofkn Points 293

Essayez : " \r\n "

Exemple de Java 7 :

// append = true
try(PrintWriter output = new PrintWriter(new FileWriter("log.txt",true))) 
{
    output.printf("%s\r\n", "NEWLINE");
} 
catch (Exception e) {}

4 votes

\r\n est pour Windows. Il est préférable d'utiliser la propriété "line.separator".

6voto

Tim Niblett Points 950

A la ligne 2, changez new FileWriter(my_file_name) à new FileWriter(my_file_name, true) de sorte que vous ajoutez au fichier plutôt que de l'écraser.

2voto

Buhake Sindi Points 38654

Vous pouvez utiliser le FileWriter(String fileName, boolean append) si vous voulez ajouter des données au fichier.

Changez votre code comme suit :

output = new BufferedWriter(new FileWriter(my_file_name, true));

Extrait de la javadoc de FileWriter :

Construit un objet FileWriter à partir d'un nom de fichier. nom de fichier. Si le second argument est vrai alors les octets seront écrits à la à la fin du fichier plutôt qu'au début.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X