gpt4 book ai didi

Go语言如何检测文件变化?

转载 作者:IT老高 更新时间:2023-10-28 13:01:30 26 4
gpt4 key购买 nike

我需要知道如何使用 Go 检测文件何时更改。我知道 Unix 提供了一个名为 fcntl() 的函数,它会在特定文件发生更改时发出通知,但我在 Go 中没有找到这个函数。请帮帮我。

最佳答案

这是一个简单的跨平台版本:

func watchFile(filePath string) error {
initialStat, err := os.Stat(filePath)
if err != nil {
return err
}

for {
stat, err := os.Stat(filePath)
if err != nil {
return err
}

if stat.Size() != initialStat.Size() || stat.ModTime() != initialStat.ModTime() {
break
}

time.Sleep(1 * time.Second)
}

return nil
}

而用法是这样的:

doneChan := make(chan bool)

go func(doneChan chan bool) {
defer func() {
doneChan <- true
}()

err := watchFile("/path/to/file")
if err != nil {
fmt.Println(err)
}

fmt.Println("File has been changed")
}(doneChan)

<-doneChan

没有适当的系统调用那么高效,但它很简单,可以在任何地方使用,并且可能足以满足某些用途。

关于Go语言如何检测文件变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8270441/

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