我有一个文件DataFile.txt,记录很少。当我添加新条目时,它会清除所有其他记录并仅保存新记录。但我想追加那条记录。
private void saveFile()
{
try
{
PrintWriter out = new PrintWriter(new FileWriter("DataFile.txt"));
String name ="";
String ID="";
String roomType ="";
String meal="";
int days=0;
int tprice=0;
for (int i = 0; i < myList.size(); i++)
{
Customer c = myList.get(i);
name = c.getName();
ID = c.getID();
roomType = c.getRoomItem();
meal = c.getMealItem();
days = c.getDaysIndex();
tprice = c.getTotalPrice();
out.println(name + "," + ID+ "," + roomType+ "," + meal+ "," + days+ "," + tprice);
}
out.close();
JOptionPane.showMessageDialog(null,"Data saved successfully!","",
JOptionPane.INFORMATION_MESSAGE);
}
catch (Exception ex)
{
System.out.println("save file fail");
}
} //end of the method
感谢。
答案 0 :(得分:4)
您可以更改为使用带有布尔append
参数的FileWriter构造函数:
PrintWriter out = new PrintWriter(new FileWriter("DataFile.txt", true));
然而:
PrintWriter
吞下例外 - 如果我是你,我就不会使用FileWriter
始终使用平台默认编码 - 我也不会使用它。我使用OutputStream
封装在使用特定编码创建的OutputStreamWriter
中。答案 1 :(得分:0)
不要使用FileWriter。无法使用FileWriter定义字符编码,并且您最终将使用系统默认编码,这通常不是您想要使用的编码。
而是使用FileOutputStream和OutputStreamWriter。是的,它是一个额外的代码行,但如果你想编写健壮且无bug的代码,则需要额外的代码。
OutputStream out = new FileOutputStream("output.txt", true);
Writer writer = new OutputStreamWriter(out, "UTF-8");
使用系统默认字符编码是最常见的错误来源。养成学习不依赖系统默认字符编码(或系统默认时区)的习惯。