Package: org.grails.io.watch

## [Java] Class DirectoryWatcher

- org.grails.io.watch.DirectoryWatcher

- Utility class to watch directories for changes.

  Authors:
    Graeme Rocher
  Since:
    2.0

- - ### Nested Class Summary

    Nested classes
    Modifiers | Name | Description
    --- | --- | ---
    `static interface` | `DirectoryWatcher.FileChangeListener` | Interface for FileChangeListeners

  - ### Field Summary

    Fields
    Modifiers | Name | Description
    --- | --- | ---
    `static java.lang.String` | `SVN_DIR_NAME` |

  - Inherited fields
    Fields inherited from class | Fields
    --- | ---
    `class java.lang.Thread` | `MIN_PRIORITY, NORM_PRIORITY, MAX_PRIORITY`

  - ### Constructor Summary

    Constructors
    Constructor and description
    `DirectoryWatcher ()` Constructor.

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `void` | `addListener(DirectoryWatcher.FileChangeListener listener)` Adds a file listener that can react to change events
    `` | `void` | `addWatchDirectory(java.io.File dir, java.util.List<java.lang.String> fileExtensions)` Adds a directory to watch for the given file and extensions.
    `` | `void` | `addWatchDirectory(java.io.File dir)` Adds a directory to watch for the given file.
    `` | `void` | `addWatchDirectory(java.io.File dir, java.lang.String extension)` Adds a directory to watch for the given file and extensions.
    `` | `void` | `addWatchFile(java.io.File fileToWatch)` Adds a file to the watch list
    `` | `void` | `removeListener(DirectoryWatcher.FileChangeListener listener)` Removes a file listener from the current list
    `` | `void` | `run()`
    `` | `void` | `setActive(boolean active)` Sets whether to stop the directory watcher
    `` | `void` | `setSleepTime(long sleepTime)` Sets the amount of time to sleep between checks

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class java.lang.Thread` | `java.lang.Thread#run(), java.lang.Thread#toString(), java.lang.Thread#isInterrupted(), java.lang.Thread#currentThread(), java.lang.Thread#getName(), java.lang.Thread#start(), java.lang.Thread#getThreadGroup(), java.lang.Thread#getStackTrace(), java.lang.Thread#holdsLock(java.lang.Object), java.lang.Thread#dumpStack(), java.lang.Thread#setPriority(int), java.lang.Thread#setDaemon(boolean), java.lang.Thread#yield(), java.lang.Thread#sleep(long, int), java.lang.Thread#sleep(long), java.lang.Thread#stop(java.lang.Throwable), java.lang.Thread#stop(), java.lang.Thread#interrupt(), java.lang.Thread#interrupted(), java.lang.Thread#destroy(), java.lang.Thread#isAlive(), java.lang.Thread#suspend(), java.lang.Thread#resume(), java.lang.Thread#getPriority(), java.lang.Thread#setName(java.lang.String), java.lang.Thread#activeCount(), java.lang.Thread#enumerate([Ljava.lang.Thread;), java.lang.Thread#countStackFrames(), java.lang.Thread#join(), java.lang.Thread#join(long), java.lang.Thread#join(long, int), java.lang.Thread#isDaemon(), java.lang.Thread#checkAccess(), java.lang.Thread#getContextClassLoader(), java.lang.Thread#setContextClassLoader(java.lang.ClassLoader), java.lang.Thread#getAllStackTraces(), java.lang.Thread#getId(), java.lang.Thread#getState(), java.lang.Thread#setDefaultUncaughtExceptionHandler(java.lang.Thread$UncaughtExceptionHandler), java.lang.Thread#getDefaultUncaughtExceptionHandler(), java.lang.Thread#getUncaughtExceptionHandler(), java.lang.Thread#setUncaughtExceptionHandler(java.lang.Thread$UncaughtExceptionHandler), java.lang.Thread#wait(long, int), java.lang.Thread#wait(long), java.lang.Thread#wait(), java.lang.Thread#equals(java.lang.Object), java.lang.Thread#hashCode(), java.lang.Thread#getClass(), java.lang.Thread#notify(), java.lang.Thread#notifyAll()`
    `class java.lang.Object` | `java.lang.Object#wait(long, int), java.lang.Object#wait(long), java.lang.Object#wait(), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll()`

- - ### Field Detail

    - #### public static final java.lang.String SVN_DIR_NAME

  - ### Constructor Detail

    - #### public DirectoryWatcher()

      Constructor. Automatically selects the best means of watching for file system changes.

  - ### Method Detail

    - #### public void addListener(DirectoryWatcher.FileChangeListener listener)

      Adds a file listener that can react to change events

      Parameters:
        `listener` - The file listener

    - #### public void addWatchDirectory(java.io.File dir, java.util.List<java.lang.String> fileExtensions)

      Adds a directory to watch for the given file and extensions.

      Parameters:
        `dir` - The directory
        `fileExtensions` - The extensions

    - #### public void addWatchDirectory(java.io.File dir)

      Adds a directory to watch for the given file. All files and subdirectories in the directory will be watched.

      Parameters:
        `dir` - The directory

    - #### public void addWatchDirectory(java.io.File dir, java.lang.String extension)

      Adds a directory to watch for the given file and extensions.

      Parameters:
        `dir` - The directory
        `extension` - The extension

    - #### public void addWatchFile(java.io.File fileToWatch)

      Adds a file to the watch list

      Parameters:
        `fileToWatch` - The file to watch

    - #### public void removeListener(DirectoryWatcher.FileChangeListener listener)

      Removes a file listener from the current list

      Parameters:
        `listener` - The file listener

    - #### @java.lang.Override public void run()

    - #### public void setActive(boolean active)

      Sets whether to stop the directory watcher

      Parameters:
        `active` - False if you want to stop watching

    - #### public void setSleepTime(long sleepTime)

      Sets the amount of time to sleep between checks

      Parameters:
        `sleepTime` - The sleep time