我正在尝试将目录设置为 Go 中的热文件夹。一旦文件完成写入该目录,就应该调用一个函数。
现在我遇到了https://github.com/howeyc/fsnotify这似乎是这样一个热文件夹的一个很好的构建块。
我的问题是 fsnotify 在写入期间会发出大量“文件更改”事件,但在完成时不会发出,所以我认为不可能通过这种方式查看进程是否已完成写入文件。
所以我会想到“在最后一个'文件更改'事件后等待一秒钟,然后运行我的函数。但我不确定这是否是解决问题的最佳方法,我不确定如何将它干净地集成到主事件循环(来自给定的 github 页面):
for {
select {
case ev := <-watcher.Event:
log.Println("event:", ev)
case err := <-watcher.Error:
log.Println("error:", err)
}
}
有什么想法/建议吗?