Problem mit QFileWatcher unter Windows bei Dateien
Verfasst: Samstag 10. Januar 2015, 18:58
Hallo,
ich habe mir eine Klasse erstellt, die mit Hilfe von QFileWatcher ein Verzeichnis auf Änderungen überwachen soll.
Dafür erstelle ich mir einen Filewatcher, der von mir als zu überwachenden Pfad das Verzeichnis und alle darin enthaltenen Dateien bekommt.
In das Verzeichnis werden Log-Dateien von einem anderen Programm geschrieben, von dem ich leider nicht weiß, wie es die Dateien öffnet und die Daten schreibt.
Ich habe das Programm unter Linux geschrieben, und da funktioniert das wirklich gut. Das fremde Programm schreibt in die Log-Dateien Daten, die Change-Notification kommt an und ich lese den Inhalt der Datei um damit zu arbeiten.
Unter Windows klappt das nicht.
Wenn ich hier das Verzeichnis überwache, in das geschrieben wird, kommt das nicht in meinem Programm an.
Wenn ich jedoch das Verzeichnis im Explorer geöffnet habe und dort F5 drücke, bekommt mein Programm die Mitteilung der in der Zwischenzeit geänderten Dateien. Ebenso wenn ich die Datei einfach in einem Editor öffne. Es reicht das öffnen, ich muss da nichts speichern.
Es scheint so, als wenn diese Änderung in den Dateien irgendwo gebuffert wird, bis sie explizit angefordert wird. Ich könnte jetzt das Verzeichnis, bzw. die Dateien manuel abfragen, aber das finde ich eher unschön weil ich dadurch Resourcen verschwende.
Weiß jemand ob ich etwsa tun kann um das Problem zu beheben?
ich habe mir eine Klasse erstellt, die mit Hilfe von QFileWatcher ein Verzeichnis auf Änderungen überwachen soll.
Dafür erstelle ich mir einen Filewatcher, der von mir als zu überwachenden Pfad das Verzeichnis und alle darin enthaltenen Dateien bekommt.
In das Verzeichnis werden Log-Dateien von einem anderen Programm geschrieben, von dem ich leider nicht weiß, wie es die Dateien öffnet und die Daten schreibt.
Ich habe das Programm unter Linux geschrieben, und da funktioniert das wirklich gut. Das fremde Programm schreibt in die Log-Dateien Daten, die Change-Notification kommt an und ich lese den Inhalt der Datei um damit zu arbeiten.
Unter Windows klappt das nicht.
Wenn ich hier das Verzeichnis überwache, in das geschrieben wird, kommt das nicht in meinem Programm an.
Wenn ich jedoch das Verzeichnis im Explorer geöffnet habe und dort F5 drücke, bekommt mein Programm die Mitteilung der in der Zwischenzeit geänderten Dateien. Ebenso wenn ich die Datei einfach in einem Editor öffne. Es reicht das öffnen, ich muss da nichts speichern.
Es scheint so, als wenn diese Änderung in den Dateien irgendwo gebuffert wird, bis sie explizit angefordert wird. Ich könnte jetzt das Verzeichnis, bzw. die Dateien manuel abfragen, aber das finde ich eher unschön weil ich dadurch Resourcen verschwende.
Weiß jemand ob ich etwsa tun kann um das Problem zu beheben?