Maison >développement back-end >Golang >Comment puis-je détecter les modifications de fichiers dans Go ?
Détection des modifications de fichiers dans Go
Question :
Comment puis-je détecter lorsqu'un fichier des changements à l'aide du langage de programmation Go ? Existe-t-il un moyen d'émuler la fonctionnalité fcntl() de Linux, qui peut avertir lorsqu'un fichier spécifique subit des modifications ?
Réponse :
Bien que la fonction fcntl() ne soit pas disponible dans Go, il existe d'autres techniques que vous pouvez utiliser pour détecter les modifications de fichiers.
Multiplateforme Méthode :
Cette méthode consiste à interroger le fichier pour détecter les modifications à intervalles réguliers :
func watchFile(filePath string) error { initialStat, err := os.Stat(filePath) if err != nil { return err } for { stat, err := os.Stat(filePath) if err != nil { return err } if stat.Size() != initialStat.Size() || stat.ModTime() != initialStat.ModTime() { break } time.Sleep(1 * time.Second) } return nil }
Cette fonction vérifie à plusieurs reprises la taille du fichier et l'heure de modification, et revient lorsqu'une modification est détectée. .
Exemple d'utilisation :
doneChan := make(chan bool) go func(doneChan chan bool) { defer func() { doneChan <- true }() err := watchFile("/path/to/file") if err != nil { fmt.Println(err) } fmt.Println("File has been changed") }(doneChan) <-doneChan
Cet exemple montre comment utiliser la fonction watchFile pour détecter les modifications de fichiers et notifier la routine principale via un canal.
Remarque :
Cette méthode multiplateforme n'est pas aussi efficace qu'un appel système natif mais fournit un moyen simple et portable de suivre les modifications des fichiers. Cela peut suffire pour certains cas d’usage.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!