When are Java temporary files deleted?

Alphaaa picture Alphaaa · May 22, 2013 · Viewed 80.6k times · Source

Suppose I create a temporary file in Java with the method

File tmp = File.createTempFile(prefix, suffix);

If I do not explicity call the delete() method, when will the file be deleted?

As an intuition, it might be when the JVM terminates, or earlier (by the Garbage Collector), or later (by some Operating System sweeping process).

Answer

Kai picture Kai · May 22, 2013

The file won't be deleted automatically, from the JavaDoc:

This method provides only part of a temporary-file facility. To arrange for a file created by this method to be deleted automatically, use the deleteOnExit() method.

So you have to explicitly call deleteOnExit():

Requests that the file or directory denoted by this abstract pathname be deleted when the virtual machine terminates.