package main import ( "log" "github.com/go-fsnotify/fsnotify" ) func main() { watcher,err := fsnotify.NewWatcher() if err != nil { log.Fatal(err) } defer watcher.Close() done := make(chan bool) go func() { for { select { case event := <-watcher.Events: log.Println("event:",event) if event.Op&fsnotify.Write == fsnotify.Write { log.Println("modified file:",event.Name) } case err := <-watcher.Errors: log.Println("error:",err) } } }() err = watcher.Add("slog") if err != nil { log.Fatal(err) } <-done }
package main import ( "github.com/howeyc/fsnotify" "log" ) type monitor struct { watch *fsnotify.Watcher } func main() { M,err := NewMonitor() if err != nil { log.Println(err) return } M.Do() M.watch.Watch("../") select {} } func NewMonitor() (monitor,error) { Mon,err := fsnotify.NewWatcher() return monitor{Mon},err } func (self monitor) Do() { go func() { for { select { case w := <-self.watch.Event: log.Println(w) if w.IsModify() { continue } if w.IsDelete() { log.Println("文件被删除.") continue } if w.IsRename() { w = <-self.watch.Event log.Println(w) self.watch.RemoveWatch(w.Name) log.Println(w.Name," 被重命名.") } case err := <-self.watch.Error: log.Fatalln(err) } } }() }原文链接:https://www.f2er.com/go/190181.html