組件分享之后端組件——Go 的文件系統(tǒng)通知組件fsnotify
背景
近期正在探索前端沧踏、后端骄酗、系統(tǒng)端各類常用組件與工具,對(duì)其一些常見的組件進(jìn)行再次整理一下悦冀,形成標(biāo)準(zhǔn)化組件專題趋翻,后續(xù)該專題將包含各類語言中的一些常用組件。歡迎大家進(jìn)行持續(xù)關(guān)注盒蟆。
組件基本信息
- 組件:fsnotify
- 開源協(xié)議:BSD-3-Clause License
內(nèi)容
本節(jié)分享一個(gè)Go 的文件系統(tǒng)通知組件fsnotify踏烙,根據(jù)其README中的描述后續(xù)應(yīng)該會(huì)集成到Go的標(biāo)準(zhǔn)庫中,因此如果你不著急則可以進(jìn)行等待后續(xù)融入到標(biāo)準(zhǔn)庫后再使用历等,如果當(dāng)前需求需要使用則可以根據(jù)文檔進(jìn)行使用
適配器 操作系統(tǒng) 地位 通知 Linux 2.6.27 or later, Android* Supported 隊(duì)列 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 未經(jīng)測試讨惩。
具體使用方式可以參考:
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
}
更多前后端組件,可以持續(xù)關(guān)注我寒屯,我將持續(xù)給大家分享各種各樣的組件包荐捻。
本文聲明:
知識(shí)共享許可協(xié)議
本作品由 cn華少 采用 知識(shí)共享署名-非商業(yè)性使用 4.0 國際許可協(xié)議 進(jìn)行許可黍少。