组件分享之后端组件——Go 的文件系统通知组件fsnotify
背景
近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件。欢迎大家进行持续关注。
组件基本信息
- 组件:fsnotify
- 开源协议:BSD-3-Clause License
内容
本节分享一个Go 的文件系统通知组件fsnotify,根据其README中的描述后续应该会集成到Go的标准库中,因此如果你不着急则可以进行等待后续融入到标准库后再使用,如果当前需求需要使用则可以根据文档进行使用
适配器 操作系统 地位 通知 Linux 2.6.27 or later, Android* Supported 队列 BSD, macOS, iOS* Supported ReadDirectoryChangesW Windows Supported FSEvents macOS Planned FEN Solaris 11 In Progress fanotify Linux 2.6.37+ Maybe USN Journals Windows Maybe Polling All Maybe
- Android 和 iOS 未经测试。
具体使用方式可以参考:
package main
import (
"log"
"github.com/fsnotify/fsnotify"
)
func main() {
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
defer watcher.Close()
done := make(chan bool)
go func() {
for {
select {
case event, ok := <-watcher.Events:
if !ok {
return
}
log.Println("event:", event)
if event.Op&fsnotify.Write == fsnotify.Write {
log.Println("modified file:", event.Name)
}
case err, ok := <-watcher.Errors:
if !ok {
return
}
log.Println("error:", err)
}
}
}()
err = watcher.Add("/tmp/foo")
if err != nil {
log.Fatal(err)
}
<-done
}
更多前后端组件,可以持续关注我,我将持续给大家分享各种各样的组件包。
本文声明:
知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。