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
  • 相关阅读:
    常见试题
    Makefile学习笔记
    安装java
    IntelliJ IDEA for mac 快捷键
    JPA--Caused by: javax.persistence.PersistenceException: [PersistenceUnit: mysqlJPA] Unable to configure EntityManagerFactory
    log4j 配置
    Numbers
    mac 命令
    Intellij IDEA for mac 快捷键
    vim命令
  • 原文地址:https://www.cnblogs.com/zhaoxianxin/p/14486856.html
Copyright © 2011-2022 走看看