In my app I\'m writing a file to store some execution info and once the execution is done I want to delete the temp file. The issue is even after file close or flush by streams
What you want to use is File.createTempFile() and call deleteOnExit()
on the resulting file. It will manage cleaning up the temp file at the end of execution for you. You shouldn't be doing this manually, let the system do this for you, that is why they included this in the standard library.
Also you should always call .close()
to make sure that all the data is flushed to the file and the handle can be cleaned up correctly.
That seems to indicate that you did not call close()
.
Reason: in the begin time of java, the Object.finalize()
method was used to clean up on garbage collection, and for I/O it did a close()
.
Until the file is in use (not closed), the file cannot be deleted on Windows.