Class FileAlterationObserver

java.lang.Object
org.apache.commons.io.monitor.FileAlterationObserver
All Implemented Interfaces:
Serializable

public class FileAlterationObserver extends Object implements Serializable
FileAlterationObserver represents the state of files below a root directory, checking the file system and notifying listeners of create, change or delete events.

To use this implementation:

Basic Usage Link icon

Create a FileAlterationObserver for the directory and register the listeners:
      File directory = new File(FileUtils.current(), "src");
      FileAlterationObserver observer = new FileAlterationObserver(directory);
      observer.addListener(...);
      observer.addListener(...);
 

To manually observe a directory, initialize the observer and invoked the checkAndNotify() method as required:

      // initialize
      observer.init();
      ...
      // invoke as required
      observer.checkAndNotify();
      ...
      observer.checkAndNotify();
      ...
      // finished
      observer.finish();
 

Alternatively, register the observer(s) with a FileAlterationMonitor, which creates a new thread, invoking the observer at the specified interval:

      long interval = ...
      FileAlterationMonitor monitor = new FileAlterationMonitor(interval);
      monitor.addObserver(observer);
      monitor.start();
      ...
      monitor.stop();
 

File Filters Link icon

This implementation can monitor portions of the file system by using FileFilters to observe only the files and/or directories that are of interest. This makes it more efficient and reduces the noise from unwanted file system events.

Commons IO has a good range of useful, ready-made File Filter implementations for this purpose.

For example, to only observe 1) visible directories and 2) files with a ".java" suffix in a root directory called "src" you could set up a FileAlterationObserver in the following way:

      // Create a FileFilter
      IOFileFilter directories = FileFilterUtils.and(
                                      FileFilterUtils.directoryFileFilter(),
                                      HiddenFileFilter.VISIBLE);
      IOFileFilter files       = FileFilterUtils.and(
                                      FileFilterUtils.fileFileFilter(),
                                      FileFilterUtils.suffixFileFilter(".java"));
      IOFileFilter filter = FileFilterUtils.or(directories, files);

      // Create the File system observer and register File Listeners
      FileAlterationObserver observer = new FileAlterationObserver(new File("src"), filter);
      observer.addListener(...);
      observer.addListener(...);
 

FileEntry Link icon

FileEntry represents the state of a file or directory, capturing File attributes at a point in time. Custom implementations of FileEntry can be used to capture additional properties that the basic implementation does not support. The FileEntry.refresh(File) method is used to determine if a file or directory has changed since the last check and stores the current state of the File's properties.

Deprecating Serialization Link icon

Serialization is deprecated and will be removed in 3.0.

Since:
2.0
See Also:
  • Constructor Details Link icon

    • FileAlterationObserver Link icon

      Deprecated.
      Constructs an observer for the specified directory.
      Parameters:
      directory - the directory to observe.
    • FileAlterationObserver Link icon

      @Deprecated public FileAlterationObserver(File directory, FileFilter fileFilter)
      Deprecated.
      Constructs an observer for the specified directory and file filter.
      Parameters:
      directory - The directory to observe.
      fileFilter - The file filter or null if none.
    • FileAlterationObserver Link icon

      @Deprecated public FileAlterationObserver(File directory, FileFilter fileFilter, IOCase ioCase)
      Deprecated.
      Constructs an observer for the specified directory, file filter and file comparator.
      Parameters:
      directory - The directory to observe.
      fileFilter - The file filter or null if none.
      ioCase - What case sensitivity to use comparing file names, null means system sensitive.
    • FileAlterationObserver Link icon

      protected FileAlterationObserver(FileEntry rootEntry, FileFilter fileFilter, IOCase ioCase)
      Constructs an observer for the specified directory, file filter and file comparator.
      Parameters:
      rootEntry - The root directory to observe.
      fileFilter - The file filter or null if none.
      ioCase - What case sensitivity to use comparing file names, null means system sensitive.
    • FileAlterationObserver Link icon

      @Deprecated public FileAlterationObserver(String directoryName)
      Deprecated.
      Constructs an observer for the specified directory.
      Parameters:
      directoryName - the name of the directory to observe.
    • FileAlterationObserver Link icon

      @Deprecated public FileAlterationObserver(String directoryName, FileFilter fileFilter)
      Deprecated.
      Constructs an observer for the specified directory and file filter.
      Parameters:
      directoryName - the name of the directory to observe.
      fileFilter - The file filter or null if none.
    • FileAlterationObserver Link icon

      @Deprecated public FileAlterationObserver(String directoryName, FileFilter fileFilter, IOCase ioCase)
      Deprecated.
      Constructs an observer for the specified directory, file filter and file comparator.
      Parameters:
      directoryName - the name of the directory to observe.
      fileFilter - The file filter or null if none.
      ioCase - what case sensitivity to use comparing file names, null means system sensitive.
  • Method Details Link icon