Go 文件/文件夹 监控 fsnotify
知识点:
github.com/fsnotify/fsnotify
建议: 在使用 fsnotify 进行监控的 时候 监控文件夹 可以及时 将文件夹内的改变都进行监听
但是, 在监听文件的时候 只能监听 文件的 第一次更改
demo:
package main; import ( "github.com/fsnotify/fsnotify" "log" ) func main() { //创建一个监控对象 watch,err := fsnotify.NewWatcher(); if err != nil { log.Fatal(err); } defer watch.Close(); //添加要监控的对象,文件或文件夹 err = watch.Add("/Users/zhaoxianxin/test"); if err != nil { log.Fatal(err); } //我们另启一个goroutine来处理监控对象的事件 go func() { for { select { case ev := <-watch.Events: { //判断事件发生的类型,如下5种 // Create 创建 // Write 写入 // Remove 删除 // Rename 重命名 // Chmod 修改权限 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 := <-watch.Errors: { log.Println("error : ",err); return; } } } }(); //循环 select {}; }
邮箱: 1090055252@qq.com