I am aware that this question is a raging duplicate of this question. However, I have now read that entire page twice, and some sections 3 times, and for th
You can only delete the file if there is no file handler left opened. Since you open the file hanlder using FileWriter, you will need to close it before you can delete it. In other word, f.delete must be executed after fw.close
Try the code below. I made the changes to prevent all possible bug you may found, e.g if fw is null.
File f = null;
FileWriter fw = null;
try {
f = new File("myFile.txt");
fw = new FileWriter(f);
fw.write("This is a sentence that should appear in the file.");
fw.flush(); // flush is not needed if this is all your code does. you data
// is automatically flushed when you close fw
} catch (Exception exc) {
System.err.println(exc.getMessage());
} finally {// finally block is always executed.
// fw may be null if an exception is raised in the construction
if (fw != null) {
fw.close();
}
// checking if f is null is unneccessary. it is never be null.
if (f.delete()) {
System.out.println("File was successfully deleted.");
} else {
System.err.println("File was not deleted.");
}
}
You're trying to delete() a file which is still referenced by an active, open FileWriter.
Try this:
f = new File("myFile.txt");
fw = new FileWriter(f);
fw.write("This is a sentence that should appear in the file.");
fw.flush();
fw.close(); // actually free any underlying file handles.
if(f.delete())
System.out.println("File was successfully deleted.");
else
System.err.println("File was not deleted.");