gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:40:57 24 4
gpt4 key购买 nike

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

现在我遇到了https://github.com/howeyc/fsnotify这似乎是此类 hotfolder 的一个很好的构建基 block 。

我的问题是 fsnotify 在写入期间发出大量“文件更改”事件,但在完成时没有发出任何事件,因此我认为不可能通过这种方式查看进程是否已完成写入文件。

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

for {
select {
case ev := <-watcher.Event:
log.Println("event:", ev)
case err := <-watcher.Error:
log.Println("error:", err)
}
}

有什么想法/建议吗?

最佳答案

以下代码将等待至少一秒钟没有收到任何事件,然后调用 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()
}

关于go - Go中的Hotfolder/等待文件被写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13434555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com