Create a 'Watcher' on a filesystem location to monitor for changes in the background.
watcher(path = getwd(), callback = NULL, latency = 1)
A 'Watcher' R6 class object.
Character path to a file, or directory to watch recursively. Defaults to the current working directory.
A function or formula (see rlang::as_function), which takes
at least one argument. It will be called back with a character vector
comprising the paths of all files that have changed. The default, NULL
,
causes the paths that have changed to be written to stdout
instead.
Numeric latency in seconds for events to be reported or callbacks triggered. The default is 1s.
A Watcher
is an R6 class with the following methods:
$start()
starts background monitoring. Returns logical TRUE
upon
success, FALSE
otherwise.
$stop()
stops background monitoring. Returns logical TRUE
upon success,
FALSE
otherwise.
$get_path()
returns the watched path as a character string.
$is_running()
returns logical TRUE
or FALSE
depending on whether the
monitor is running.
Uses an optimal event-driven API for each platform: 'ReadDirectoryChangesW' on Windows, 'FSEvents' on MacOS, 'inotify' on Linux, 'kqueue' on BSD, and 'File Events Notification' on Solaris/Illumos.
Note: the latency
setting controls how often the changes are processed, and
does not mean that changes are polled for at this interval. The changes are
monitored in an event-driven fashion by the platform-specific monitor. Events
are 'bubbled' such that a single change that triggers multiple filesystem
events will cause the callback to be called only once.
It is possible to set a watch on a path that does not currently exist, and it will be monitored once created.
w <- watcher(tempdir())
w$start()
w
w$get_path()
w$stop()
w$is_running()
Sys.sleep(1)
Run the code above in your browser using DataLab