8
gfsnotify.Add的recursive参数问题 文档说是默认递归监听 代码注释默认是非递归监听
g/os/gfsnotify/gfsnotify_watcher.go#L28 该行的if条件与代码注释不匹配(recursive参数的判断)
gfsnotify.Add的recursive参数问题 文档说是默认递归监听 代码注释默认是非递归监听
g/os/gfsnotify/gfsnotify_watcher.go#L28 该行的if条件与代码注释不匹配(recursive参数的判断)
还有个问题,gfsnotify.Remove方法是不是只能移除同路径的目录监听,不能只移除某个子目录的目录监听? 例如: 目录D:\aaa\bbb\ccc
Add("D:\aaa")之后 只能移除相同目录监听 Remove("D:\aaa") 不能移除子目录监听 Remove("D:\aaa\bbb")
@hailaz 感谢反馈,你问了两个问题,第一个问题是代码注释问题,默认为递归目录添加,我已经修正了注释文字说明。第二个问题我看了代码但没有手动测试,应该是可以移除子目录的监听的。gfsnotify
这个包封装和设计得非常棒,你可以测试一下,有问题欢迎继续反馈。
@johngcn 代码的功能默认是非递归,在子目录新建修改什么的没有触发事件。
func funcName() {
path, _ := os.Getwd()
_, err := gfsnotify.Add(path, func(event *gfsnotify.Event) {
switch {
case event.IsCreate():
glog.Println("创建文件 : ", event.Path)
case event.IsWrite():
glog.Println("写入文件 : ", event.Path)
case event.IsRemove():
glog.Println("删除文件 : ", event.Path)
case event.IsRename():
glog.Println("重命名文件 : ", event.Path)
case event.IsChmod():
glog.Println("修改权限 : ", event.Path)
default:
glog.Println(event)
}
})
if err != nil {
glog.Fatalfln("%v", err)
} else {
select {}
}
}
另外注意确认一下 g/os/gfsnotify/gfsnotify_watcher.go#L28 这一行代码的if 条件是不是有问题
@hailaz 我没有复现你说的问题,我测试的环境是Windows 7
,代码如下:
package main
import (
"github.com/gogf/gf/g/os/gfsnotify"
"github.com/gogf/gf/g/os/glog"
)
func main() {
path := `D:\temp`
_, err := gfsnotify.Add(path, func(event *gfsnotify.Event) {
glog.Println(event)
}, true)
if err != nil {
glog.Fatal(err)
} else {
select {}
}
}
测试结果截图如下:
@johngcn 你试试把true去掉。说好的默认,你却填了个true [捂脸]。
@hailaz 感谢,确实有个细节没处理好,没有判断默认值,已修复,将会在下一个修正版本发布。
@hailaz 请更新到v1.7.2
再试试。