I have a savegame file called mysave.sav
and I want to add data to this file if the file already exists. If the file doesn't exists, I want to create the file and then add the data.
Adding data works fine. But appending data overwrites existing data. I followed the instructions of axtavt here (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();
}
where mapstring
is the string I want to append. Can you help me? Thank you!
Once you call PrintWriter out = new PrintWriter(savestr);
the file is created if doesn't exist hence first check for file existence then initialize it.
As mentioned in it's Constructor Docmentation as well that says:
If the file exists then it will be truncated to zero size; otherwise, a new file will be created.
Since file is created before calling f.exists()
hence it will return true
always and ìf
block is never executed at all.
Sample code:
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();
For better resource handling use Java 7 - The try-with-resources Statement