2011-12-21 5 views
8

J'ai un programme qui ajoute des personnes à un arraylist. Ce que j'essaie de faire est d'ajouter ces personnes à un fichier texte, mais le programme écrase la première ligne pour que les personnes soient effacées.Java - Ne pas écraser avec bufferedwriter

Comment puis-je dire au compilateur d'écrire à la prochaine ligne libre?

import java.io.*; 
import java.util.*; 
import javax.swing.JTextArea; 

public class Logic { 

File file; 
FileWriter fw; 
FileReader fr; 
BufferedWriter bw; 
ArrayList<Person> person; 

public Logic() { 
    try { 
     file = new File("register.txt"); 

     if (!file.exists()) { 
      file.createNewFile(); 
     } 
    } catch (IOException e) { 
    } 

    person = new ArrayList<Person>(); 
} 

// Add person 
public void addPerson(String name, int tele) { 
    person.add(new Person(name, tele)); 
    savePerson(name, tele); 
} 

// Save person to external file 
public void savePerson(String name, int tele) { 
    try { 
     fw = new FileWriter(file.getName()); 
     bw = new BufferedWriter(fw); 
     String tel = Integer.toString(tele); 
     bw.write(name + "\t" + tel); 
     bw.newLine(); 
     bw.close(); 

    } catch (Exception e) { 
     System.out.println("skrev inte ut med buffered"); 
    } 
} 

// Går in i alla objekt av klassen Person och skriver ut toString i 
// textArean 
public void visaAlla(JTextArea textRuta) { 
    textRuta.setText(""); 
    // for(Person p:person) 
    // { 
    // textRuta.append(p.toString()); 
    // } 

    try { 
     fr = new FileReader(file.getName()); 
     BufferedReader in = new BufferedReader(fr); 
     String str; 

     while ((str = in.readLine()) != null) { 
      textRuta.append(str); 
     } 

    } catch (Exception e) { 
     System.out.println("gickcinte "); 
    } 
} 
} 

Répondre

12

FileWriter prend une optional boolean argument qui précise si elle doit ajouter ou remplacer le contenu existant. Passez true si vous voulez ouvrir le fichier pour l'écriture en mode ajout.

+0

C'est bon! Merci! – user1051477