fsnotify 文件系统通知库
fsnotify
是一个用于 Go 语言的文件系统通知库,它可以监视文件或目录的变化,比如文件的创建、删除、修改等。通过 fsnotify
,你可以在文件系统发生变化时做出相应的响应,非常适合用于配置文件热加载、日志监控等场景。
常见应用场景
- 配置文件热加载:当配置文件发生变化时自动重新加载配置,不需要手动重启程序。
- 日志监控:监控日志文件是否被修改,实时获取日志变化。
- 文件监控:对文件的创建、删除、修改等操作进行监控并作出相应处理。
使用示例
以下是一个使用 fsnotify
监控配置文件变化的简单示例:
1 |
|
代码解析
- **
fsnotify.NewWatcher()
**:创建一个新的文件监视器。 - **
watcher.Add("config.yaml")
**:指定需要监控的文件或目录,这里监控的是config.yaml
文件。 - 事件处理:
event.Op&fsnotify.Write == fsnotify.Write
:当文件发生写入修改时,触发对应的逻辑处理。- 可以根据
event.Op
判断是文件的创建、删除、重命名还是修改。
常见的事件类型
fsnotify.Create
:文件或目录被创建。fsnotify.Remove
:文件或目录被删除。fsnotify.Rename
:文件或目录被重命名。fsnotify.Write
:文件或目录被修改。fsnotify.Chmod
:文件权限被更改。
使用场景示例:配置文件热加载
假设你有一个配置文件 config.yaml
,每次修改它时,你希望自动重新加载这个配置文件,fsnotify
可以帮你做到这一点。结合 viper
可以实现自动重新加载配置:
1 |
|
总结
fsnotify
提供了一种简单的方法来监控文件和目录的变化,适用于实时响应文件系统事件的场景。- 通过
fsnotify
,你可以实现配置文件的热加载、日志监控等功能,提高程序的灵活性和自动化能力。
fsnotify 文件系统通知库
http://willxu0313.github.io/2025/01/22/gin-backend/fsnotify/