File and directory watcher