@izac

Файл занят другим процессом?

Начал изучение 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
  • Вопрос задан
  • 508 просмотров
Пригласить эксперта
Ответы на вопрос 1
В вашем коде вы ждёте создания фйла, как только он создан, открываете его и не закрываете. Поэтому вам и пишет, что файл занят другим процессом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы