Cross platform, works on:
- Windows
- Linux
- BSD
- OSX
Example:
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
// Process events
go func() {
for {
select {
case ev := <-watcher.Event:
log.Println("event:", ev)
case err := <-watcher.Error:
log.Println("error:", err)
}
}
}()
err = watcher.Watch("/tmp")
if err != nil {
log.Fatal(err)
}
/* ... do stuff ... */
watcher.Close()
For each event:
- Name
- IsCreate()
- IsDelete()
- IsModify()
- IsRename()
Notes:
- When a file is renamed to another directory is it still being watched?
- No (it shouldn't be, unless you are watching where it was moved to).
- When I watch a directory, are all subdirectories watched as well?
- No, you must add watches for any directory you want to watch.
- Do I have to watch the Error and Event channels in a separate goroutine?
- As of now, yes. Looking into making this single-thread friendly.