如果文件存在,PrintWriter将附加数据

我有一个名为mysave.sav的savegame文件,如果文件已存在,我想将数据添加到此文件中。 如果该文件不存在,我想创建该文件,然后添加数据。

添加数据工作正常。 但附加数据会覆盖现有数据。 我按照axtavt的说明( PrintWriter追加方法不附加 )。

  String savestr = "mysave.sav"; File f = new File(savestr); PrintWriter out = new PrintWriter(savestr); if ( f.exists() && !f.isDirectory() ) { out = new PrintWriter(new FileOutputStream(new File(savestr), true)); out.append(mapstring); out.close(); } else { out.println(mapstring); out.close(); } 

其中mapstring是我想要追加的字符串。 你能帮助我吗? 谢谢!

一旦调PrintWriter out = new PrintWriter(savestr); 如果文件不存在则创建该文件,因此首先检查文件是否存在然后初始化它。

正如它在构造函数Docmentation中提到的那样:

如果该文件存在,那么它将被截断为零大小; 否则,将创建一个新文件。

由于文件是在调用f.exists()之前创建的,因此它将始终返回true并且永远不会执行“块”。

示例代码:

 String savestr = "mysave.sav"; File f = new File(savestr); PrintWriter out = null; if ( f.exists() && !f.isDirectory() ) { out = new PrintWriter(new FileOutputStream(new File(savestr), true)); } else { out = new PrintWriter(savestr); } out.append(mapstring); out.close(); 

为了更好地处理资源,请使用Java 7 - The try-with-resources Statement

Interesting Posts