org.apache.tomcat.util.http.fileupload

## Class FileUtils

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

    public class FileUtils
    extends 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

Origin of code: Excalibur, Alexandria, Commons-Utils

### Constructor Summary

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

### Method Summary

Methods
`static void` `cleanDirectory(File directory)` Cleans a directory without deleting it.
`static void` `deleteDirectory(File directory)` Deletes a directory recursively.
`static void` `forceDelete(File file)` Deletes a file.
`static void` `forceDeleteOnExit(File file)` Schedules a file to be deleted when JVM exits.
`static boolean` `isSymlink(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(File directory)
                                throws IOException

Deletes a directory recursively.

Parameters:
  `directory` - directory to delete
Throws:
  `IOException` - in case deletion is unsuccessful

#### cleanDirectory

    public static void cleanDirectory(File directory)
                               throws IOException

Cleans a directory without deleting it.

Parameters:
  `directory` - directory to clean
Throws:
  `IOException` - in case cleaning is unsuccessful

#### forceDelete

    public static void forceDelete(File file)
                            throws 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:
  `NullPointerException` - if the directory is `null`
  `FileNotFoundException` - if the file was not found
  `IOException` - in case deletion is unsuccessful

#### forceDeleteOnExit

    public static void forceDeleteOnExit(File file)
                                  throws 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:
  `NullPointerException` - if the file is `null`
  `IOException` - in case deletion is unsuccessful

#### isSymlink

    public static boolean isSymlink(File file)
                             throws 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:
  `IOException` - if an IO error occurs while checking the file
Since:
  2.0