Java - 不要用缓冲写入器覆盖
Posted
技术标签:
【中文标题】Java - 不要用缓冲写入器覆盖【英文标题】:Java - Do not overwrite with bufferedwriter 【发布时间】:2012-01-25 03:50:37 【问题描述】:我有一个将人员添加到数组列表的程序。我要做的是将这些人也添加到一个文本文件中,但程序会覆盖第一行,因此这些人会被删除。
如何告诉编译器在下一个空闲行写入?
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 ");
【问题讨论】:
【参考方案1】:FileWriter
采用optional boolean argument 指定它是否应该附加到现有内容或覆盖现有内容。如果要以追加模式打开文件进行写入,请传入true
。
【讨论】:
以上是关于Java - 不要用缓冲写入器覆盖的主要内容,如果未能解决你的问题,请参考以下文章