我正在使用golang监视程序包来监视文件目录。 https://github.com/radovskyb/watcher
唯一的问题是,创建事件是在文件开始被复制/移动时触发的,而不是在文件实际准备好时触发的。我想知道在创建事件之后Go中是否有一种整洁的等待方式,直到不再写入文件再继续。
我想这种等待很可能必须在goroutine中完成才能不阻止任何其他文件事件。
简单的例子:
package main
import (
"fmt"
"log"
"time"
"github.com/radovskyb/watcher"
)
func main() {
w := watcher.New()
w.FilterOps(watcher.Create, watcher.Write)
go func() {
for {
select {
case event := <-w.Event:
fmt.Println(event) // Print the event's info.
if event.Op == watcher.Create {
// HERE WE DO STUFF
doStuff(event)
}
case err := <-w.Error:
log.Fatalln(err)
case <-w.Closed:
return
}
}
}()
// Watch this folder for changes.
if err := w.Add("./files/"); err != nil {
log.Fatalln(err)
}
// Start the watching process - it'll check for changes every 100ms.
if err := w.Start(time.Millisecond * 100); err != nil {
log.Fatalln(err)
}
}
谢谢!
相关分类