首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Go / wait中的Hotfolder等待文件写入

Go / wait中的Hotfolder等待文件写入
EN

Stack Overflow用户
提问于 2012-11-18 04:36:32
回答 1查看 2.6K关注 0票数 5

我正在尝试将一个目录设置为Go中的热文件夹。一旦将文件写入该目录,就应该调用一个函数。

现在我遇到了https://github.com/howeyc/fsnotify,它似乎是这样一个热文件夹的一个很好的构建块。

我的问题是,fsnotify在写入过程中会发出许多“文件更改”事件,但在写入完成后没有任何事件,所以我假设不可能通过这种方式来查看进程是否已经完成了文件写入。

所以我会想到“在最后一个‘文件更改’事件后等待一秒钟,然后运行我的函数,但我不确定这是否是处理这个问题的最好方法,我也不确定如何在主事件循环(从给定的github页面)中干净利落地集成它:

代码语言:javascript
复制
for {
    select {
    case ev := <-watcher.Event:
        log.Println("event:", ev)
    case err := <-watcher.Error:
        log.Println("error:", err)
    }
}

有什么想法/建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-18 04:55:06

下面的代码将等待,直到至少一秒内没有接收到事件,然后调用f()

代码语言:javascript
复制
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()
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13434555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档