zoukankan      html  css  js  c++  java
  • Go 文件/文件夹 监控 fsnotify

    知识点:

    github.com/fsnotify/fsnotify

    建议: 在使用 fsnotify 进行监控的 时候 监控文件夹 可以及时 将文件夹内的改变都进行监听
      
       但是, 在监听文件的时候 只能监听 文件的 第一次更改

    demo:

    package main;
    
    import (
        "github.com/fsnotify/fsnotify"
        "log"
    )
    
    func main() {
        //创建一个监控对象
        watch,err := fsnotify.NewWatcher();
        if err != nil {
            log.Fatal(err);
        }
        defer watch.Close();
        //添加要监控的对象,文件或文件夹
        err = watch.Add("/Users/zhaoxianxin/test");
        if err != nil {
            log.Fatal(err);
        }
        //我们另启一个goroutine来处理监控对象的事件
        go func() {
            for {
                select {
                case ev := <-watch.Events:
                    {
                        //判断事件发生的类型,如下5种
                        // Create 创建
                        // Write 写入
                        // Remove 删除
                        // Rename 重命名
                        // Chmod 修改权限
                        if ev.Op&fsnotify.Create == fsnotify.Create {
                            log.Println("创建文件 : ",ev.Name);
                        }
                        if ev.Op&fsnotify.Write == fsnotify.Write {
                            log.Println("写入文件 : ",ev.Name);
                        }
                        if ev.Op&fsnotify.Remove == fsnotify.Remove {
                            log.Println("删除文件 : ",ev.Name);
                        }
                        if ev.Op&fsnotify.Rename == fsnotify.Rename {
                            log.Println("重命名文件 : ",ev.Name);
                        }
                        if ev.Op&fsnotify.Chmod == fsnotify.Chmod {
                            log.Println("修改权限 : ",ev.Name);
                        }
                    }
                case err := <-watch.Errors:
                    {
                        log.Println("error : ",err);
                        return;
                    }
                }
            }
        }();
    
        //循环
        select {};
    }
    邮箱: 1090055252@qq.com
  • 相关阅读:
    php 图片剪切
    mysql 官方docker镜像使用教程
    centos7 取消自动锁屏
    nginx配置反向代理示例
    nginx 官方docker镜像使用教程
    centos 下nginx源码编译安装
    nginx rewrite规则实例讲解
    requests.session()会话保持
    我对网络IO的理解
    日常运维--rsync同步工具
  • 原文地址:https://www.cnblogs.com/zhaoxianxin/p/14486856.html
Copyright © 2011-2022 走看看