golang 中文件监控 fsnotify的一些疑问

新手上路,请多包涵

在用 github.com/howeyc/fsnotify 这个包的时候发现 不能正确的处理文件夹的重命名操作
文件夹重命名后,对文件夹进行操作新产生的时间中的event.Name还是原来的名字。我该如何解决?

或者还有什么监听文件变化的包?

比如我这里把文件夹名 dddd 改成了 eeee
紫色框里变成eeee才对啊
图片描述

阅读 7.2k
1 个回答

对于递归检测的情况,每次检测到一个rename时,需要将原来的子目录从监控列表中删除,然后再添加改名后的子目录到监控列表中。
粗略看了一下 github.com/howeyc/fsnotify 的实现代码,调用 addWatch 操作时,会建立一个 wfdpath 的 map,后面发现这个path上有事件时,将之前记录的 path 和 OS 返回的相对路径连起来得到 event.Name 这个字段,因此除非你删除后再添加一次,否则 path 值是不会变的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题