如果文件存在,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