Go语言监控文件变化小程序.

前端之家收集整理的这篇文章主要介绍了Go语言监控文件变化小程序.前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. package main
  2.  
  3. import (
  4. "log"
  5.  
  6. "github.com/go-fsnotify/fsnotify"
  7. )
  8.  
  9. func main() {
  10. watcher,err := fsnotify.NewWatcher()
  11. if err != nil {
  12. log.Fatal(err)
  13. }
  14. defer watcher.Close()
  15. done := make(chan bool)
  16. go func() {
  17. for {
  18. select {
  19. case event := <-watcher.Events:
  20. log.Println("event:",event)
  21. if event.Op&fsnotify.Write == fsnotify.Write {
  22. log.Println("modified file:",event.Name)
  23. }
  24. case err := <-watcher.Errors:
  25. log.Println("error:",err)
  26. }
  27. }
  28. }()
  29.  
  30. err = watcher.Add("slog")
  31. if err != nil {
  32. log.Fatal(err)
  33. }
  34. <-done
  35. }


  1. package main
  2.  
  3. import (
  4. "github.com/howeyc/fsnotify"
  5. "log"
  6. )
  7.  
  8. type monitor struct {
  9. watch *fsnotify.Watcher
  10. }
  11.  
  12. func main() {
  13. M,err := NewMonitor()
  14. if err != nil {
  15. log.Println(err)
  16. return
  17. }
  18. M.Do()
  19. M.watch.Watch("../")
  20. select {}
  21. }
  22. func NewMonitor() (monitor,error) {
  23. Mon,err := fsnotify.NewWatcher()
  24. return monitor{Mon},err
  25. }
  26. func (self monitor) Do() {
  27. go func() {
  28. for {
  29. select {
  30. case w := <-self.watch.Event:
  31. log.Println(w)
  32. if w.IsModify() {
  33. continue
  34. }
  35. if w.IsDelete() {
  36. log.Println("文件删除.")
  37. continue
  38. }
  39. if w.IsRename() {
  40. w = <-self.watch.Event
  41. log.Println(w)
  42. self.watch.RemoveWatch(w.Name)
  43. log.Println(w.Name," 被重命名.")
  44. }
  45. case err := <-self.watch.Error:
  46. log.Fatalln(err)
  47. }
  48. }
  49. }()
  50. }

猜你在找的Go相关文章