Neue Dateien ermitteln (QFileSystemWatcher)

Alles rund um die Programmierung mit Qt
Antworten
dontinelli
Beiträge: 146
Registriert: 22. September 2006 20:53

Neue Dateien ermitteln (QFileSystemWatcher)

Beitrag 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
dazedly
Beiträge: 197
Registriert: 3. Oktober 2010 15:38
Kontaktdaten:

Beitrag 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.
dontinelli
Beiträge: 146
Registriert: 22. September 2006 20:53

Beitrag 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.
dontinelli
Beiträge: 146
Registriert: 22. September 2006 20:53

Beitrag 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.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Neue Dateien lösen hier (Linux, INotify-Unterstützung) ein directoryChanged-Signal aus...
dontinelli
Beiträge: 146
Registriert: 22. September 2006 20:53

Beitrag 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...
dazedly
Beiträge: 197
Registriert: 3. Oktober 2010 15:38
Kontaktdaten:

Beitrag 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.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Alternativ kann man das QFileSystemModel verwenden und muß halt die Signale dataChanged, endInsertRows, beginRemoveRows auswerten...
Antworten