# TempFileManager

Class to be used by Working with OMERO and server components to allow a uniform creation of temporary files and folders with a best-effort guarantee of deleting the resources on exit. The manager searches three locations in order, taking the first which allows lockable write-access (See #1653):

- The environment property setting `OMERO_TMPDIR`

- The user’s home directory, for example specified in Java via `System.getProperty("user.home")`

- The system temp directory, in Java `System.getProperty("java.io.tmpdir")` and in Python `tempfile.gettempdir()`

## Creating temporary files

For the user “ralph”,

    from omero.util.temp_files import create_path
    path = create_path("omero",".tmp")

or

    import omero.util.TempFileManager
    File file = TempFileManager.create_path("omero",".tmp")

both produce a file under the directory:

    /tmp/omero_ralph/$PID/omero$RANDOM.tmp

where $PID is the current process id and $RANDOM is some random sequence of alphanumeric characters.

## Removing files

If `remove_path` is called on the return value of `create_path`, then the temporary resources will be cleaned up immediately. Otherwise, when the Java or Python process exits, they will be deleted. This is achieved in Java through `Runtime#addShutdownHook(Thread)` and in Python via `atexit.register()`.

## Creating directories

If an entire directory with a unique directory is needed, pass “true” as the “folder” argument of the `create_path` method:

    create_path("omero", ".tmp", folder = True)

and

    TempFileManager.create_path("omero", ".tmp", true);

Note

All contents of the generated directory will be deleted.

See also

#1534