登录
首页 >  Golang >  Go问答

监听尚未创建的文件:使用 fsnotify 的方法

来源:stackoverflow

时间:2024-03-18 15:57:25 362浏览 收藏

使用 fsnotify 库可以轻松监听文件系统中的文件更改,但对于尚未创建的文件,需要采取额外的步骤。本指南提供了使用 fsnotify 监听尚未创建的文件的方法,通过循环检查文件是否存在,并在文件创建后开始监听文件系统更改。这种方法简单有效,可以帮助开发者在文件创建后及时采取行动,例如读取或处理文件内容。

问题内容

我想使用 fsnotify 来监听启动监听时未创建的文件。 fsnotify 侦听预计会在写入和关闭监视的文件时退出,或者在特定时间段内超时。我知道我们可以使用通道来设置超时,但不确定如何实现监听尚未创建的文件。

我猜我们可以监听包含此文件的目录(例如,如果想要的文件是 /tmp/temp.txt,我们可以只监听 /tmp/),但不确定如何限制监听只是那个文件(在监听期间该目录下可能有其他文件发生变化,我不希望他们打扰)


正确答案


嗯,你可以做这样的事情

func checkfile(path string) {
    for {
        if _, err := os.stat(path); errors.is(err, os.errnotexist) {
            log.println("file doesn't exist")
        } else {
            log.println("file exists")
            // start fsnotify here :)
            // optionally break out of the loop, etc.
        }
        time.sleep(time.second * 1) // can change this value if you see fit
    }
}

func main() {
    checkfile("./test")
}

这将记录类似这样的内容

2021/12/15 18:51:00 File doesn't exist
2021/12/15 18:51:01 File doesn't exist
// I manually created a file called test
2021/12/15 18:51:07 File exists
2021/12/15 18:51:08 File exists

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>