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

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

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

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

组件基本信息 组件:fsnotify 开源协议:BSD-3-Clause License 内容

本节分享一个Go 的文件系统通知组件fsnotify,根据其README中的描述后续应该会集成到Go的标准库中,因此如果你不着急则可以进行等待后续融入到标准库后再使用,如果当前需求需要使用则可以根据文档进行使用

适配器 *** 作系统地位
通知Linux 2.6.27 or later, Android*Supported
队列BSD, macOS, iOS*Supported
ReadDirectoryChangesWWindowsSupported
FSEventsmacOSPlanned
FENSolaris 11In Progress
fanotifyLinux 2.6.37+Maybe
USN JournalsWindowsMaybe
PollingAllMaybe
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 国际许可协议 进行许可。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/993774.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存