Maison >développement back-end >Golang >Comment puis-je détecter les modifications de fichiers dans Go ?

Comment puis-je détecter les modifications de fichiers dans Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-02 22:38:10829parcourir

How Can I Detect File Changes in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn