我正在尝试将一个目录设置为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)
}
}有什么想法/建议吗?
发布于 2012-11-18 04:55:06
下面的代码将等待,直到至少一秒内没有接收到事件,然后调用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()
}https://stackoverflow.com/questions/13434555
复制相似问题