Détecter les modifications de fichiers dans Go : une solution pratique
Le langage Go offre des fonctionnalités étendues pour la gestion des fichiers, mais la détection des modifications de fichiers n'est pas aussi simple comme dans les systèmes Unix. Pour résoudre ce problème, explorons une approche multiplateforme qui exploite le package os.
Détection des modifications de fichiers
Le package os offre un moyen pratique d'obtenir les attributs des fichiers, y compris sa taille et l'heure de la dernière modification. En comparant périodiquement ces attributs, vous pouvez identifier quand un fichier a été modifié.
L'extrait de code suivant montre comment implémenter la détection des modifications de fichier :
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 }
Utilisation et considérations
Pour utiliser cette fonction, transmettez simplement le chemin du fichier que vous souhaitez surveiller. La fonction vérifiera en permanence les attributs du fichier et vous avertira lorsqu'elle détectera des modifications. Voici un 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
Bien que cette approche ne soit pas aussi efficace que les appels système comme fcntl(), elle est simple et fonctionne de manière fiable sur toutes les plates-formes. Cela peut être particulièrement utile lorsque vous n'avez pas accès aux fonctions système de bas niveau.
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!