FSNotify 在运行时添加监视目录

Posted

技术标签:

【中文标题】FSNotify 在运行时添加监视目录【英文标题】:FSNotify add watch directories while running 【发布时间】:2017-03-27 01:41:27 【问题描述】:

我真的不知道如何提出这个问题,但就是这样。

我正在使用 fsnotify 来监视某些目录的更改,当文件更改时,我会将更改同步到另一个目录。但我也想将新创建的目录添加到手表中,但它并没有真正起作用。

这是我的代码:

func Watcher() 
    watcher, err := fsnotify.NewWatcher()
    defer watcher.Close()

    done := make(chan bool)
    go func() 
        for 
            select 
            case event := <-watcher.Events:

                    if file.Mode().IsDir() 
                    err = os.Mkdir(dest, 0755)
                    err = watcher.Add(dest)

            
        case err := <-watcher.Errors:
            log.Println("error:", err)
        
    
    ()

    dirs, err := readLines("dirs")
    for _, el := range dirs 
        err = watcher.Add(el)
    
    check(err)
    <-done

函数要长得多,但我已经删除了不重要的部分。一切正常,除了err = watcher.Add(dest)

如何让它观看更多目录?

【问题讨论】:

【参考方案1】:

它工作得很好,但我弄错了一些变量。应该是 watcher.Add(event.Name) 而不是 watcher.Add(dest)

【讨论】:

以上是关于FSNotify 在运行时添加监视目录的主要内容,如果未能解决你的问题,请参考以下文章

使用 inotifywait 监视多个目录并运行脚本

在fsnotify上递归重新生成文件删除/重命名(Golang)

Java:监视目录以移动大文件

go监视文件改变实现同步--包含遍历文件夹,执行cmd命令,检测文件改变

将文件夹添加到监视目录时不会触发 inotifywait close_write

当页面重新加载时正在监视的属性未更改时,Vue watch 不会运行