java:在现有文件中追加数据

时间:2012-04-25 10:29:33

标签: java java-ee r.java-file

我有一个文件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

感谢。

2 个答案:

答案 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");

使用系统默认字符编码是最常见的错误来源。养成学习不依赖系统默认字符编码(或系统默认时区)的习惯。