fsnotify
go get github.com/fsnotify/fsnotify
文件系统事件通知 功能,允许程序监控文件系统的变化
案例
package main
import (
"fmt"
"log"
"github.com/fsnotify/fsnotify"
)
func main() {
// 创建一个新的文件系统通知监控器
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
defer watcher.Close()
// 监视指定目录(这里是当前目录)
err = watcher.Add(".")
if err != nil {
log.Fatal(err)
}
fmt.Println("监控文件夹中的变化...")
// 启动一个 goroutine 来处理事件
go func() {
for {
select {
case event := <-watcher.Events:
// 输出事件信息
fmt.Println("文件事件:", event)
if event.Op&fsnotify.Write == fsnotify.Write {
fmt.Println("文件修改:", event.Name)
}
if event.Op&fsnotify.Create == fsnotify.Create {
fmt.Println("文件创建:", event.Name)
}
if event.Op&fsnotify.Remove == fsnotify.Remove {
fmt.Println("文件删除:", event.Name)
}
if event.Op&fsnotify.Rename == fsnotify.Rename {
fmt.Println("文件重命名:", event.Name)
}
if event.Op&fsnotify.Chmod == fsnotify.Chmod {
fmt.Println("文件权限变化:", event.Name)
}
case err := <-watcher.Errors:
// 错误处理
fmt.Println("错误:", err)
}
}
}()
// 阻塞主线程,等待文件事件
select {}
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
关于 LearnKu