如何附加到文本文件而不是用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); } 

改变这个:

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

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

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

请注意, FileWriter通常不是一个很好的类 – 我更喜欢使用包装在OutputStreamWriter FileOutputStream ,因为它允许您指定要使用的字符编码,而不是使用您的操作系统默认值。

改变这个:

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

对此:

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

FileWriter的构造函数的第二个参数是你是否要追加到你打开的文件。 这会导致文件指针在写入之前移动到文件的末尾。

使用

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

来自JavaDoc :

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

两种选择:

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