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
Libérer: 2024-12-02 22:38:10
original
844 Les gens l'ont consulté

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
}
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal