下面这段代码监控一个目录中文件的变化,它只监控当前目录,不对子目录做响应。
package main import ( "github.com/fsnotify/fsnotify" "log" ) func main() { // 创建一个监控对象 watcher, err := fsnotify.NewWatcher() if err != nil { log.Fatal(err) } defer watcher.Close() // 添加要监控的对象,文件或文件夹 err = watcher.Add("C:/Users/jilili/Projects/") if err != nil { log.Fatal(err) } // Process events go func() { for { select { case ev := <-watcher.Events: { if ev.Op&fsnotify.Create == fsnotify.Create { log.Println("创建文件 : ", ev.Name) } if ev.Op&fsnotify.Write == fsnotify.Write { log.Println("写入文件 : ", ev.Name) } if ev.Op&fsnotify.Remove == fsnotify.Remove { log.Println("删除文件 : ", ev.Name) } if ev.Op&fsnotify.Rename == fsnotify.Rename { log.Println("重命名文件 : ", ev.Name) } if ev.Op&fsnotify.Chmod == fsnotify.Chmod { log.Println("修改权限 : ", ev.Name) } } case err := <-watcher.Errors: { log.Println("error : ", err) return } } } }() // Hang so program doesn't exit select{} /* ... do stuff ... */ watcher.Close() }