Heim > Backend-Entwicklung > Golang > Wie kann ich Dateiänderungen in Go erkennen?

Wie kann ich Dateiänderungen in Go erkennen?

Barbara Streisand
Freigeben: 2024-12-02 22:38:10
Original
820 Leute haben es durchsucht

How Can I Detect File Changes in Go?

Dateiänderungen in Go erkennen

Frage:

Wie kann ich erkennen, wenn eine Datei Änderungen mit der Programmiersprache Go? Gibt es eine Möglichkeit, die fcntl()-Funktionalität von Linux zu emulieren, die benachrichtigen kann, wenn eine bestimmte Datei Änderungen erfährt?

Antwort:

Die fcntl()-Funktion hingegen nicht Obwohl in Go verfügbar, gibt es noch andere Techniken, mit denen Sie Dateiänderungen erkennen können.

Plattformübergreifend Methode:

Bei dieser Methode wird die Datei in regelmäßigen Abständen auf Änderungen abgefragt:

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
}
Nach dem Login kopieren

Diese Funktion überprüft wiederholt die Größe und den Änderungszeitpunkt der Datei und kehrt zurück, wenn eine Änderung erkannt wird .

Verwendungsbeispiel:

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
Nach dem Login kopieren

Dieses Beispiel zeigt, wie es geht Verwenden Sie die watchFile-Funktion, um Dateiänderungen zu erkennen und die Hauptroutine über einen Kanal zu benachrichtigen.

Hinweis:

Diese plattformübergreifende Methode ist nicht so effizient wie ein natives System Aufruf, bietet aber eine einfache und portable Möglichkeit, Dateiänderungen zu verfolgen. Für bestimmte Anwendungsfälle kann es ausreichend sein.

Das obige ist der detaillierte Inhalt vonWie kann ich Dateiänderungen in Go erkennen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage