什么是fsnotify
一个跨平台的go文件变化监视器,简单来说,它可以观察某些指定文件的状态并返回不同的状态码,举个例子,当我们需要检测配置文件的修改来重启应用时,fsnotify就可以派上用场了
安装
$ go get github.com/fsnotify/fsnotify
实例
package main
import (
"log"
"github.com/fsnotify/fsnotify"
)
func main() {
// Create new watcher.
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
defer watcher.Close()
// Start listening for events.
go func() {
for {
select {
case event, ok := <-watcher.Events:
if !ok {
return
}
log.Println("event:", event)
if event.Has(fsnotify.Write) {
log.Println("modified file:", event.Name)
}
case err, ok := <-watcher.Errors:
if !ok {
return
}
log.Println("error:", err)
}
}
}()
// Add a path.
err = watcher.Add("./")
if err != nil {
log.Fatal(err)
}
// Block main goroutine forever.
<-make(chan struct{})
}
这段代码可以监控当前目录下的文件的写入和修改操作