56 votes

La méthode d'ajout de PrintWriter ne s'ajoute pas

La méthode suivante n'écrit que le dernier élément que j'ai ajouté, elle ne s'ajoute pas aux entrées précédentes. Qu'est-ce que je fais mal?

 public void addNew() {
    try {
        PrintWriter pw = new PrintWriter(new File("persons.txt"));
        int id = Integer.parseInt(jTextField.getText());
        String name = jTextField1.getText();
        String surname = jTextField2.getText();
        Person p = new Person(id,name,surname);
        pw.append(p.toString());
        pw.append("sdf");
        pw.close();
    } catch (FileNotFoundException e) {...}
}

102voto

axtavt Points 126632

Le fait que PrintWriter la méthode « est appelée append() ne signifie pas qu'il change le mode du fichier en cours d' ouverture.

Vous devez également ouvrir le fichier en mode ajout :

 PrintWriter pw = new PrintWriter(new FileOutputStream(
    new File("persons.txt"), 
    true /* append = true */)); 

Notez également que le fichier sera écrit dans le codage par défaut du système. Ce n'est pas toujours souhaité et peut causer des problèmes d'interopérabilité, vous pouvez spécifier l'encodage de fichier explicitement.

18voto

Stephan Points 1962
PrintWriter pw = new PrintWriter(new FileOutputStream(new File("persons.txt"),true));

Le true est l'indicateur d'ajout. Voir la documentation .

13voto

Sumit Singh Points 8601

Ouvrez le fichier en mode ajout, comme avec le code suivant :

  PrintWriter pw = new PrintWriter(new FileOutputStream(new File("persons.txt"), true)); 

2voto

Neeraj Kumar Points 61

Vous n'avez pas besoin de doubler la mise en mémoire tampon comme indiqué dans toutes les autres réponses. Vous pouvez simplement faire

 PrintWriter pw = new PrintWriter(new FileWriter("persons.txt",true));

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