Heim >Backend-Entwicklung >Golang >Wie kann ich Dateiänderungen in Go erkennen?
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 }
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 <p>Dieses Beispiel zeigt, wie es geht Verwenden Sie die watchFile-Funktion, um Dateiänderungen zu erkennen und die Hauptroutine über einen Kanal zu benachrichtigen.</p><p><strong>Hinweis:</strong></p><p>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.</p>
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!