WatchService is a
class included in the standard Java nio package since version 7. WatchService is extremely useful when we need to trigger an action after an event happens to an object in a specific folder or set of folders.
In the following code I have implemented a watch service registered to a root folder and all its subfolders.
Most of the examples around are based on Java 7. Since I am using Java 8 I have decided to re-implement it
using streams and lambdas:
The code responsible to recursively register the folders has been implemented as a
Consumer
Functional Interface (lines 67-84) and gets called to register the root folder (line 86) and the folders created at
successive stages (line 109).
A lambda with no arguments (or thunk) is used at line 88 to create and start a separate thread to execute
the WatchService logic.
The iteration of the pending events has been implemented in a functional style using Java 8 streams (lines 103-114).
The code makes use of Spring but itâs extremely easy to remove it and adapt to other needs.