如何附加到文本文件而不是用Java覆盖它?

时间:2010-11-24 16:48:48

标签: java

我正在尝试使用Java向文本文件添加一行。当我运行程序时,我的意思是添加一个简单的行,但我的程序在写入新数据之前删除了文本文件中的所有旧数据。

以下是代码:

 FileWriter fw = null;
  PrintWriter pw = null;
    try {
        fw = new FileWriter("output.txt");
        pw = new PrintWriter(fw);

    pw.write("testing line \n");
        pw.close();
        fw.close();
    } catch (IOException ex) {
        Logger.getLogger(FileAccessView.class.getName()).log(Level.SEVERE, null, ex);
    }

4 个答案:

答案 0 :(得分:21)

改变这个:

fw = new FileWriter("output.txt");

fw = new FileWriter("output.txt", true);

有关详细信息,请参阅javadoc - 实际上“附加”默认为false。

请注意,FileWriter通常不是一个很好用的类 - 我更喜欢使用FileOutputStream中包含的OutputStreamWriter,因为这可以指定要使用的字符编码,而不是使用您的操作系统默认值。

答案 1 :(得分:6)

改变这个:

fw = new FileWriter("output.txt");

到此:

fw = new FileWriter("output.txt", true);

FileWriter的{​​{3}}的第二个参数是您是否要附加到您正在打开的文件。这会导致文件指针在写入之前移动到文件的末尾。

答案 2 :(得分:1)

使用

fw = new FileWriter("output.txt", true);

来自JavaDoc

  

构造一个给定的FileWriter对象   文件对象。如果第二个参数是   如果为true,则写入字节   文件的结尾而不是   开始。

答案 3 :(得分:1)

两个选项:

  1. 困难之处:阅读整个文件,然后将其写出来并加上新数据。
  2. 简单方法:以“追加”模式打开文件:new FileWriter( path, true );