下面这段代码监控一个目录中文件的变化,它只监控当前目录,不对子目录做响应。

package main

import (
    "github.com/fsnotify/fsnotify"
    "log"
)

func main() {
    // 创建一个监控对象
    watcher, err := fsnotify.NewWatcher()
    if err != nil {
        log.Fatal(err)
    }
    defer watcher.Close()

    // 添加要监控的对象,文件或文件夹
    err = watcher.Add("C:/Users/jilili/Projects/")
    if err != nil {
        log.Fatal(err)
    }

    // Process events
    go func() {
        for {
            select {
            case ev := <-watcher.Events:
                {
                    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 := <-watcher.Errors:
                {
                    log.Println("error : ", err)
                    return
                }
            }
        }
    }()

    // Hang so program doesn't exit
    select{}

    /* ... do stuff ... */
    watcher.Close()
}

[ 编辑 | 历史 ]
最近由“jilili”在“2018-06-08 12:15:47”修改