javagarbage-collectiontemporary-files

When are Java temporary files deleted?


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).


Solution

  • The file won't be deleted automatically. See File.createTempFile:

    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 File.deleteOnExit():

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