一、Go 的 fsnotify 的使用
使用方法非常简单:
-
先用 fsnotify 创建一个监听器;
-
然后放到一个单独的 Goroutine 监听事件即可,通过 channel 的方式传递;
package main
import (
"log"
"github.com/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, ok := <-watcher.Events:
if !ok {
return
}
// 打印监听事件
log.Println("event:", event)
case _, ok := <-watcher.Errors:
if !ok {
return
}
}
}
}()
// 监听当前目录
err = watcher.Add("./")
if err != nil {
log.Fatal(err)
}
<-done
}
二、nodejs的fs模块
使用方法:
- 使用fs模块的watch方法,在回调函数内处理变化。
const fs = require("fs");
const folderPath = "***PATH***"; // ***PATH***替换为你想监视的文件夹路径
fs.watch(folderPath, (eventType, filename) => {
// eventType 可能是 'rename' 或 'change'
// filename 是发生变化的文件的名称
console.log(`文件 ${filename} 发生了 ${eventType} 事件。`);
});