Class TempFileManager

java.lang.Object
org.apache.maven.surefire.api.util.TempFileManager

public final class TempFileManager extends Object
Management of temporary files in surefire with support for sub directories of the system's directory of temporary files.
The File.createTempFile(String, String) API creates rather meaningless file names and only in the system's temp directory.
This class creates temp files from a prefix, a unique date/timestamp, a short file id and suffix. It also helps you organize temporary files into sub-directories, and thus avoid bloating the temp directory root.
Apart from that, this class works in much the same way as File.createTempFile(String, String) and File.deleteOnExit(), and can be used as a drop-in replacement.
  • Field Details

    • INSTANCES

      private static final Map<File,TempFileManager> INSTANCES
    • FILE_ID

      private static final AtomicInteger FILE_ID
      An id unique across all file managers used as part of the temporary file's base name.
    • SUFFIX_TMP

      private static final String SUFFIX_TMP
      See Also:
    • shutdownHook

      private static Thread shutdownHook
    • tempDir

      private final File tempDir
      The temporary directory or sub-directory under which temporary files are created.
    • baseName

      private final String baseName
      The fixed base name used between prefix and suffix of temporary files created by this class.
    • tempFiles

      private final List<File> tempFiles
      List of successfully created temporary files.
    • deleteOnExit

      private boolean deleteOnExit
      Temporary files are delete on JVM exit if true.
  • Constructor Details

    • TempFileManager

      private TempFileManager(File tempDir)
  • Method Details

    • calcTempDir

      private static File calcTempDir(String subDirName)
    • instance

      public static TempFileManager instance()
    • instance

      public static TempFileManager instance(String subDirName)
      Creates an instance using a subdirectory of the system's temporary directory.
      Parameters:
      subDirName - name of subdirectory
      Returns:
      instance
    • instance

      public static TempFileManager instance(File tempDir)
    • deleteAll

      public void deleteAll()
    • shutdownAll

      static void shutdownAll()
    • getTempDir

      public File getTempDir()
      Returns the temporary directory or sub-directory under which temporary files are created.
      Returns:
      temporary directory
    • createTempFile

      public File createTempFile(String prefix, String suffix)
      Creates a new, uniquely-named temporary file in this object's tempDir with user-defined prefix and suffix (both may be null or empty and won't be trimmed).

      This method behaves similarly to File.createTempFile(String, String) and may be used as a drop-in replacement.
      This method is synchronized to help ensure uniqueness of temporary files.

      Parameters:
      prefix - optional file name prefix
      suffix - optional file name suffix
      Returns:
      file object
    • createTempFile

      public File createTempFile(String prefix)
    • isDeleteOnExit

      public boolean isDeleteOnExit()
    • setDeleteOnExit

      public void setDeleteOnExit(boolean deleteOnExit)
      Instructs this file manager to delete its temporary files during JVM shutdown.
      This status can be turned on and off unlike File.deleteOnExit().
      Parameters:
      deleteOnExit - delete the file in a shutdown hook on JVM exit
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getJavaIoTmpDir

      public static String getJavaIoTmpDir()
      Returns the value of system property java.io.tmpdir, the system's temp directory.
      Returns:
      path to system temp directory