Package org.apache.commons.io

# Class FileDeleteStrategy

java.lang.Object
org.apache.commons.io.FileDeleteStrategy

public class FileDeleteStrategy extends Object
Strategy for deleting files.

There is more than one way to delete a file. You may want to limit access to certain directories, to only delete directories if they are empty, or maybe to force deletion.

This class captures the strategy to use and is designed for user subclassing.

Since:
  1.3

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final FileDeleteStrategy`
  `FORCE`
  The singleton instance for forced file deletion, which always deletes, even if the file represents a non-empty directory.
  `static final FileDeleteStrategy`
  `NORMAL`
  The singleton instance for normal file deletion, which does not permit the deletion of directories that are not empty.

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `FileDeleteStrategy(String name)`
  Restricted constructor.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `delete(File fileToDelete)`
  Deletes the file object, which may be a file or a directory.
  `boolean`
  `deleteQuietly(File fileToDelete)`
  Deletes the file object, which may be a file or a directory.
  `protected boolean`
  `doDelete(File file)`
  Actually deletes the file object, which may be a file or a directory.
  `String`
  `toString()`
  Gets a string describing the delete strategy.

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

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

- ## Field Details

  - ### NORMAL

    public static final FileDeleteStrategy NORMAL
    The singleton instance for normal file deletion, which does not permit the deletion of directories that are not empty.

  - ### FORCE

    public static final FileDeleteStrategy FORCE
    The singleton instance for forced file deletion, which always deletes, even if the file represents a non-empty directory.

- ## Constructor Details

  - ### FileDeleteStrategy

    protected FileDeleteStrategy(String name)
    Restricted constructor.
    Parameters:
      `name` - the name by which the strategy is known

- ## Method Details

  - ### delete

    public void delete(File fileToDelete) throws IOException
    Deletes the file object, which may be a file or a directory. If the file does not exist, the method just returns.

    Subclass writers should override `doDelete(File)`, not this method.

    Parameters:
      `fileToDelete` - the file to delete, not null
    Throws:
      `NullPointerException` - if the file is null
      `IOException` - if an error occurs during file deletion

  - ### deleteQuietly

    public boolean deleteQuietly(File fileToDelete)
    Deletes the file object, which may be a file or a directory. All `IOException`s are caught and false returned instead. If the file does not exist or is null, true is returned.

    Subclass writers should override `doDelete(File)`, not this method.

    Parameters:
      `fileToDelete` - the file to delete, null returns true
    Returns:
      true if the file was deleted, or there was no such file

  - ### doDelete

    protected boolean doDelete(File file) throws IOException
    Actually deletes the file object, which may be a file or a directory.

    This method is designed for subclasses to override. The implementation may return either false or an `IOException` when deletion fails. The `delete(File)` and `deleteQuietly(File)` methods will handle either response appropriately. A check has been made to ensure that the file will exist.

    This implementation uses `FileUtils.delete(File)`.

    Parameters:
      `file` - the file to delete, exists, not null
    Returns:
      true if the file was deleted
    Throws:
      `NullPointerException` - if the file is null
      `IOException` - if an error occurs during file deletion

  - ### toString

    public String toString()
    Gets a string describing the delete strategy.
    Overrides:
      `toString` in class `Object`
    Returns:
      a string describing the delete strategy