FileUtils (Apache Tomcat 10.0.27 API Documentation)

Package org.apache.tomcat.util.http.fileupload

## Class FileUtils

- java.lang.Object
- - org.apache.tomcat.util.http.fileupload.FileUtils

-     public class FileUtils
      extends java.lang.Object

  General file manipulation utilities.

  Facilities are provided in the following areas:

  - writing to a file
  - reading from a file
  - make a directory including parent directories
  - copying files and directories
  - deleting files and directories
  - converting to and from a URL
  - listing files and directories by filter and extension
  - comparing file content
  - file last changed date
  - calculating a checksum

  Note that a specific charset should be specified whenever possible. Relying on the platform default means that the code is Locale-dependent. Only use the default if the files are known to always use the platform default.

  Origin of code: Excalibur, Alexandria, Commons-Utils

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `FileUtils()` | Instances should NOT be constructed in standard programming.

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static void` | `cleanDirectory​(java.io.File directory)` | Cleans a directory without deleting it.
    `static void` | `deleteDirectory​(java.io.File directory)` | Deletes a directory recursively.
    `static void` | `forceDelete​(java.io.File file)` | Deletes a file.
    `static void` | `forceDeleteOnExit​(java.io.File file)` | Schedules a file to be deleted when JVM exits.
    `static void` | `forceMkdir​(java.io.File directory)` | Makes a directory, including any necessary but nonexistent parent directories.
    `static void` | `forceMkdirParent​(java.io.File file)` | Makes any necessary but nonexistent parent directories for a given File.
    `static boolean` | `isSymlink​(java.io.File file)` | Determines whether the specified file is a Symbolic Link rather than an actual file.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### FileUtils

          public FileUtils()

      Instances should NOT be constructed in standard programming.

  - ### Method Detail

    - #### deleteDirectory

          public static void deleteDirectory​(java.io.File directory)
                                      throws java.io.IOException

      Deletes a directory recursively.
      Parameters:
        `directory` - directory to delete
      Throws:
        `java.io.IOException` - in case deletion is unsuccessful
        `java.lang.IllegalArgumentException` - if `directory` does not exist or is not a directory

    - #### cleanDirectory

          public static void cleanDirectory​(java.io.File directory)
                                     throws java.io.IOException

      Cleans a directory without deleting it.
      Parameters:
        `directory` - directory to clean
      Throws:
        `java.io.IOException` - in case cleaning is unsuccessful
        `java.lang.IllegalArgumentException` - if `directory` does not exist or is not a directory

    - #### forceDelete

          public static void forceDelete​(java.io.File file)
                                  throws java.io.IOException

      Deletes a file. If file is a directory, delete it and all sub-directories.

      The difference between File.delete() and this method are:

      - A directory to be deleted does not have to be empty.
      - You get exceptions when a file or directory cannot be deleted. (java.io.File methods returns a boolean)
      Parameters:
        `file` - file or directory to delete, must not be `null`
      Throws:
        `java.lang.NullPointerException` - if the directory is `null`
        `java.io.FileNotFoundException` - if the file was not found
        `java.io.IOException` - in case deletion is unsuccessful

    - #### forceDeleteOnExit

          public static void forceDeleteOnExit​(java.io.File file)
                                        throws java.io.IOException

      Schedules a file to be deleted when JVM exits. If file is directory delete it and all sub-directories.
      Parameters:
        `file` - file or directory to delete, must not be `null`
      Throws:
        `java.lang.NullPointerException` - if the file is `null`
        `java.io.IOException` - in case deletion is unsuccessful

    - #### forceMkdir

          public static void forceMkdir​(java.io.File directory)
                                 throws java.io.IOException

      Makes a directory, including any necessary but nonexistent parent directories. If a file already exists with specified name but it is not a directory then an IOException is thrown. If the directory cannot be created (or does not already exist) then an IOException is thrown.
      Parameters:
        `directory` - directory to create, must not be `null`
      Throws:
        `java.lang.NullPointerException` - if the directory is `null`
        `java.io.IOException` - if the directory cannot be created or the file already exists but is not a directory

    - #### forceMkdirParent

          public static void forceMkdirParent​(java.io.File file)
                                       throws java.io.IOException

      Makes any necessary but nonexistent parent directories for a given File. If the parent directory cannot be created then an IOException is thrown.
      Parameters:
        `file` - file with parent to create, must not be `null`
      Throws:
        `java.lang.NullPointerException` - if the file is `null`
        `java.io.IOException` - if the parent directory cannot be created
      Since:
        2.5

    - #### isSymlink

          public static boolean isSymlink​(java.io.File file)
                                   throws java.io.IOException

      Determines whether the specified file is a Symbolic Link rather than an actual file.

      Will not return true if there is a Symbolic Link anywhere in the path, only if the specific file is.

      Note: the current implementation always returns `false` if the system is detected as Windows using `File.separatorChar` == '\\'

      Parameters:
        `file` - the file to check
      Returns:
        true if the file is a Symbolic Link
      Throws:
        `java.io.IOException` - if an IO error occurs while checking the file
      Since:
        2.0