我有一个名为mysave.sav
的savegame文件,如果该文件已存在,我想将数据添加到此文件中。如果该文件不存在,我想创建该文件,然后添加数据。
添加数据工作正常。但附加数据会覆盖现有数据。我遵循了axtavt的指示(PrintWriter append method not appending)。
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
是我要追加的字符串。你能帮助我吗?谢谢!
答案 0 :(得分:5)
一旦你调用PrintWriter out = new PrintWriter(savestr);
文件就会被创建(如果不存在)因此首先检查文件是否存在然后进行初始化。
正如Constructor Docmentation中提到的那样:
如果该文件存在,那么它将被截断为零大小;否则,将创建一个新文件。
由于文件是在调用f.exists()
之前创建的,因此它将始终返回true
并且永远不会执行ìf
块。
示例代码:
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