Seite 1 von 1
Neue Dateien ermitteln (QFileSystemWatcher)
Verfasst: 9. Januar 2011 11:32
von dontinelli
Hallo zusammen
Ich möchte gerne ein Verzeichnis überwachen und alle neuen Dateien herausfinden.
Ein Blick in die Doku liefert mir den QFileSystemWatcher, welcher sich aber bei näherem Hinschauen als nicht ideal erweist: Zwar liefert er brav alle geänderten Verzeichnisse, aber nicht die Dateien (so zumindest verstehe ich zumindest die Doku zu directoryChanged und fileChanged).
Muss ich also directoryChanged abfangen und selber nach der geänderten Datei suchen? Oder habe ich etwas übersehen?
Danke für eure Aufklärung!
LG
Dontinelli
Verfasst: 9. Januar 2011 11:56
von dazedly
Löst er bei einer neuen Datei nicht auch void fileChanged ( const QString & path ) aus? Wenn ja, sagt der das Signal ja welche Datei es war.
Verfasst: 9. Januar 2011 12:08
von dontinelli
So wie ich das verstehe, wird das Signal nur bei einer geänderten Datei emittiert, nicht aber bei einer neuen:
This signal is emitted when the file at the specified path is modified, renamed or removed from disk.
Ich werde dies aber mal testen, um sicher zu gehen.
Verfasst: 9. Januar 2011 12:18
von dontinelli
Bei meinem Testcase hat sich meine Vermutung bestätigt: fileChanged wird nur emittiert, wenn eine Datei, welche mit addPath() überwacht wird, eine Änderung erfahren hat. Neue Dateien in einem Ordner lösen das Signal (mangesl Überwachung) jedoch nicht aus.
Verfasst: 9. Januar 2011 15:15
von upsala
Neue Dateien lösen hier (Linux, INotify-Unterstützung) ein directoryChanged-Signal aus...
Verfasst: 9. Januar 2011 15:24
von dontinelli
Neue Dateien lösen hier (Linux, INotify-Unterstützung) ein directoryChanged-Signal aus...
Ja, bei mir auch. Aber eben kein fileChanged, damit habe ich keine Ahnung, welche Datei neu ist.
Wie es scheint führt kein Weg daran vorbei, alle Dateien des Ordners auf ihr Datum/Zeit zu überprüfen...
Verfasst: 9. Januar 2011 17:24
von dazedly
Du kannst doch beim Auslesen ne Liste der Dateien speichern und bei directoryChanged die Aktuelle Liste mit der alten vergleichen und dann ersetzen. Dann haste ja ne Ahnung, was gelöscht, oder hinzugefügt wurde.
Verfasst: 21. Februar 2011 12:19
von upsala
Alternativ kann man das QFileSystemModel verwenden und muß halt die Signale dataChanged, endInsertRows, beginRemoveRows auswerten...