package main
import (
"log"
"github.com/go-fsnotify/fsnotify"
)
func main() {
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
defer watcher.Close()
done := make(chan bool)
go func() {
for {
select {
case event := <-watcher.Events:
log.Println("event:", event)
if event.Op&fsnotify.Write == fsnotify.Write {
log.Println("modified file:", event.Name)
}
case err := <-watcher.Errors:
log.Println("error:", err)
}
}
}()
err = watcher.Add("slog")
if err != nil {
log.Fatal(err)
}
<-done
}
package main
import (
"github.com/howeyc/fsnotify"
"log"
)
type monitor struct {
watch *fsnotify.Watcher
}
func main() {
M, err := NewMonitor()
if err != nil {
log.Println(err)
return
}
M.Do()
M.watch.Watch("../")
select {}
}
func NewMonitor() (monitor, error) {
Mon, err := fsnotify.NewWatcher()
return monitor{Mon}, err
}
func (self monitor) Do() {
go func() {
for {
select {
case w := <-self.watch.Event:
log.Println(w)
if w.IsModify() {
continue
}
if w.IsDelete() {
log.Println("文件被删除.")
continue
}
if w.IsRename() {
w = <-self.watch.Event
log.Println(w)
self.watch.RemoveWatch(w.Name)
log.Println(w.Name, " 被重命名.")
}
case err := <-self.watch.Error:
log.Fatalln(err)
}
}
}()
}