我正在尝试将目录设置为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) }}有任何想法/建议吗?
1 回答
湖上湖
TA贡献2003条经验 获得超2个赞
以下代码将等待,直到至少一秒钟未收到任何事件,然后调用f()。
for {
timer := time.NewTimer(1*time.Second)
select {
case ev := <-watcher.Event:
log.Println("event:", ev)
case err := <-watcher.Error:
log.Println("error:", err)
case <-timer.C:
f()
}
timer.Stop()
}
- 1 回答
- 0 关注
- 249 浏览
添加回答
举报
0/150
提交
取消