我试图在Go中将目录设置为hotfolder.一旦文件写入该目录,就应该调用一个函数.
现在我遇到了https://github.com/howeyc/fsnotify,这对于这样的hotfolder似乎是一个很好的构建块.
我的问题是fsnotify在写入过程中会发出大量"文件已更改"的事件,但在完成时没有,所以我认为不可能以某种方式查看进程是否已完成文件写入.
所以我会想到"在最后'文件更改'事件后等待一秒钟,然后运行我的功能.但我不确定这是否是处理问题的最佳方法,我不确定如何干净地整合这个问题主事件循环(来自给定的github页面):
for {
select {
case ev := <-watcher.Event:
log.Println("event:", ev)
case err := <-watcher.Error:
log.Println("error:", err)
}
}
Run Code Online (Sandbox Code Playgroud)
有什么想法/建议吗?
以下代码将等待,直到至少一秒钟没有收到任何事件,然后再打电话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()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1659 次 |
| 最近记录: |