Начал изучение Golang и решил написать программу которая следит за папкой (использую
https://github.com/howeyc/fsnotify данную утилиту) , но в момент когда мы определяем что новый файл был создан в папке за которой я слежу он , я так понимаю , данная утилита открывает этот файл , и при попытке открыть файл получаем ошибку что файл невозможно открыть так как он используется другим процессом
func main(){
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
done := make(chan bool)
// Process events
go func() {
for {
select {
case ev := <-watcher.Event:
if ev.IsCreate() == true {
time.Sleep(100 * time.Millisecond)
file,err := os.OpenFile(path,os.O_RDWR|os.O_EXCL,0755)
}
case err := <-watcher.Error:
log.Println("error:", err)
}
}
}()
err = watcher.Watch("test")
if err != nil {
log.Fatal(err)
}
<-done
watcher.Close()
}
по коду видно что был сделан "костыльный метод" с слипом , но думаю что это не правильно и потому хочу узнать как сделать это по нормальному , знаю что есть такая возможность как defer но не знаю как её можно использовать с if