开发组件

组件分享之后端组件——Go 的文件系统通知组件fsnotify

2022-04-10  本文已影响0人  cn華少

组件分享之后端组件——Go 的文件系统通知组件fsnotify

背景

近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件。欢迎大家进行持续关注。

组件基本信息

内容

本节分享一个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
}

更多前后端组件,可以持续关注我,我将持续给大家分享各种各样的组件包。

本文声明:
88x31.png
知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
上一篇 下一篇

猜你喜欢

热点阅读