当前位置: 首页 > news >正文

GO Fsnotify学习与使用

文章目录

        • 说明
        • demo

说明

fsnotify 是 Go 的一个文件系统通知库,可以监视文件或目录的变化。基本用法如下:

  1. 安装库:

    go get github.com/fsnotify/fsnotify
    
  2. 创建 watcher:

    watcher, err := fsnotify.NewWatcher()
    if err != nil {log.Fatal(err)
    }
    defer watcher.Close()
    
  3. 添加要监视的文件或目录:

    err = watcher.Add("your/file/or/directory")
    if err != nil {log.Fatal(err)
    }
    
  4. 处理事件:

    go func() {for {select {case event, ok := <-watcher.Events:if !ok {return}fmt.Println("event:", event)case err, ok := <-watcher.Errors:if !ok {return}fmt.Println("error:", err)}}
    }()
    
demo

要在 Gin 中使用 fsnotify 监控多个文件或目录,可以按照以下步骤操作:

  1. 安装依赖

    go get github.com/gin-gonic/gin
    
  2. 创建 Gin 应用和监视器

    package mainimport ("fmt""github.com/fsnotify/fsnotify""github.com/gin-gonic/gin""log""os"
    )func main() {router := gin.Default()watcher, err := fsnotify.NewWatcher()if err != nil {log.Fatal(err)}defer watcher.Close()// 添加多个监视的文件或目录paths := []string{"path/to/dir1", "path/to/file1", "path/to/dir2"}for _, path := range paths {err = watcher.Add(path)if err != nil {log.Fatal(err)}}go func() {for {select {case event, ok := <-watcher.Events:if !ok {return}fmt.Println("event:", event)case err, ok := <-watcher.Errors:if !ok {return}fmt.Println("error:", err)}}}()// 启动 Gin 服务router.GET("/", func(c *gin.Context) {c.String(200, "Monitoring files...")})router.Run(":8080")
    }
    

相关文章:

  • 前端必知必会-jQuery 遍历 - 后代
  • 音视频生态下Unity3D和虚幻引擎(Unreal Engine)的区别
  • Excel 获取某列不为空的值【INDEX函数 | SMALL函数或 LARGE函数 | ROW函数 | ISBLANK 函数】
  • Three.js动画与交互
  • win10文件共享设置 - 开启局域网文件共享 - “您没有权限访问,请与网络管理员联系请求访问权限”解决方案
  • 抖店电商怎么使用云账户解决资金提现?
  • 公网IP和内网IP比较
  • 第八章 实战:构建Tomcat镜像及发布
  • 测试用例的进阶二
  • 独立站如何批量查收录?常用的3个的方法及其具体操作步骤
  • 23款奔驰E300立标升级23P智能辅助驾驶案例分享
  • 爬虫技术深潜:探究 JsonPath 与 XPath 的语法海洋与实战岛屿
  • 力扣 最小覆盖子串
  • 数据集-目标检测系列-鲨鱼检测数据集 shark >> DataBall
  • cmd命令大全详解
  • canvas 五子棋游戏
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • GitUp, 你不可错过的秀外慧中的git工具
  • React-生命周期杂记
  • Redis在Web项目中的应用与实践
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • Vue小说阅读器(仿追书神器)
  • 什么软件可以剪辑音乐?
  • 手写一个CommonJS打包工具(一)
  • 算法之不定期更新(一)(2018-04-12)
  • 新书推荐|Windows黑客编程技术详解
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 正则表达式小结
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • 进程与线程(三)——进程/线程间通信
  • # 透过事物看本质的能力怎么培养?
  • #565. 查找之大编号
  • (PySpark)RDD实验实战——取一个数组的中间值
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (三)docker:Dockerfile构建容器运行jar包
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • **《Linux/Unix系统编程手册》读书笔记24章**
  • .NET Framework .NET Core与 .NET 的区别
  • .NET Project Open Day(2011.11.13)
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .net6+aspose.words导出word并转pdf
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .Net环境下的缓存技术介绍
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • @ConfigurationProperties注解对数据的自动封装
  • @selector(..)警告提示
  • []FET-430SIM508 研究日志 11.3.31
  • [04] Android逐帧动画(一)
  • [100天算法】-不同路径 III(day 73)
  • [AIGC] 开源流程引擎哪个好,如何选型?
  • [BPU部署教程] 教你搞定YOLOV5部署 (版本: 6.2)