fsnotify

AI摘要
本文介绍了如何使用Go语言的fsnotify库监控文件系统变化。通过创建监控器并指定目录,程序可实时检测文件的创建、修改、删除、重命名及权限变更等事件,并输出相应提示。

go get github.com/fsnotify/fsnotify
文件系统事件通知 功能,允许程序监控文件系统的变化
案例

    package main
    import (
        "fmt"
        "log"
        "github.com/fsnotify/fsnotify"
)

    func main() {
        // 创建一个新的文件系统通知监控器
        watcher, err := fsnotify.NewWatcher()
        if err != nil {
            log.Fatal(err)
        }
      defer watcher.Close()

        // 监视指定目录(这里是当前目录)
        err = watcher.Add(".")
        if err != nil {
        log.Fatal(err)
    }

    fmt.Println("监控文件夹中的变化...")

// 启动一个 goroutine 来处理事件
go func() {
    for {
        select {
        case event := <-watcher.Events:
            // 输出事件信息
            fmt.Println("文件事件:", event)
            if event.Op&fsnotify.Write == fsnotify.Write {
                fmt.Println("文件修改:", event.Name)
            }
            if event.Op&fsnotify.Create == fsnotify.Create {
                fmt.Println("文件创建:", event.Name)
            }
            if event.Op&fsnotify.Remove == fsnotify.Remove {
                fmt.Println("文件删除:", event.Name)
            }
            if event.Op&fsnotify.Rename == fsnotify.Rename {
                fmt.Println("文件重命名:", event.Name)
            }
            if event.Op&fsnotify.Chmod == fsnotify.Chmod {
                fmt.Println("文件权限变化:", event.Name)
            }

        case err := <-watcher.Errors:
            // 错误处理
            fmt.Println("错误:", err)
        }
    }
}()

// 阻塞主线程,等待文件事件
select {}

}

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!