为了账号安全,请及时绑定邮箱和手机立即绑定

Go中的Hotfolder /等待文件被写入

Go中的Hotfolder /等待文件被写入

Go
月关宝盒 2021-05-14 18:19:19
我正在尝试将目录设置为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()

}


查看完整回答
反对 回复 2021-05-24
  • 1 回答
  • 0 关注
  • 249 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信