[gelöst] QFile Attribute lesen und setzen

Alles rund um die Programmierung mit Qt
Antworten
hs60
Beiträge: 31
Registriert: 13. Januar 2010 16:54

[gelöst] QFile Attribute lesen und setzen

Beitrag von hs60 »

Hallo,

kurz zu meinem Problem:

ich muss jede Viertelstunde aus einem Verzeichnis die Dateien auf einen Server übertragen. Es sollen aber nicht immer alle Dateien, sondern nur jene, welche sich seit der letzten Übertragung verändert haben, gesendet werden.

Ich wollte dafür das Archive-Bit, welches ja bei einer Veränderung gesetzt wird, dafür auswerten. Ich finde aber leider keine Möglichkeit, auf dieses Archive-Bit zuzugreifen.

Kennt hier jemand eine Möglichkeit bzw. hat jemand einen Tipp?

mfg
Herbert
Zuletzt geändert von hs60 am 3. Februar 2010 11:35, insgesamt 1-mal geändert.
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

Was hälst von nen Directory Watcher der bei jeden neuen File in ne Map /Liste einträgt? Beim Hochladen einfach Liste durchgehen. Oder geht das nichtß
hs60
Beiträge: 31
Registriert: 13. Januar 2010 16:54

Beitrag von hs60 »

Hallo,

ja, an so etwas habe ich ebenfalls schon gedacht. Wollte mich nur vergewissern, ob es vielleicht doch die Möglichkeit über Attribute gibt.

Ansonsten hat der Directory Watcher sicherlich auch seine Vorteile, ich denke da nur an System-Unabhängigkeit.

Hast du bzgl. Directory Watcher schon Erfahrung? Wenn ja, könntest du mir ev. ein paar Denkanstösse geben, wie man so etwas sinnvoll aufbaut. Soll ich in einem eigenen Verzeichnis alle in Frage kommenden Dateien speichern und das Erstellungsdatum jeweils vor dem Senden vergleichen. Oder würde das auch mit einer Stringliste funktionieren, in welche als Referenz nur jeweils der Dateiname und das Datum gespeichert werden - obwohl dies ev. bei über 1000 Dateien zu einem Speicherproblem kommen könnte.

mfg
Herbert
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Das Archiv-Bit ist System-spezifisch und wird wahrscheinlich deswegen nicht unterstützt.
Der QFileSystemWatcher arbeitet bis auf die Einschränkungen in der Doku Systemunabhängig und wäre in diesem Fall wahrscheinlich die eleganteste Lösung.
1000 Dateipfade + Datum sind vielleicht mal 64kByte. Da sind ja die die Qt-Bibliotheken schon 100x größer.
hs60
Beiträge: 31
Registriert: 13. Januar 2010 16:54

Beitrag von hs60 »

Hallo,

verstehe ich das richtig, das QFileSystemWatcher nur dann eine Änderung von Dateien erkennt, während das Programm läuft. Bei einem neuerlichen Programmstart und Einlesen des Verzeichnisses werden demnach keine Änderungen an Dateien erkannt. Oder speichert QFileSystemWatcher zu jeder Datei irgendein Bit ab, wenn sich die Datei geändert hat?

In erstem Fall wäre das für mich nicht zu gebrauchen, da mein Programm nicht dauernd läuft. Es wird viertelstündlich von einem Fremdprogramm gestartet und soll nun NUR die veränderten bzw. neu hinzugekommenen Dateien uploaden.

mfg
Herbert
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wo sollte QFileSystemwacher das speichern bzw. herwissen?
Das musst du schon selbst übernehmen...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Eigentlich schon mal was von rsync gehört?
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

Schreib die ein File beim schließen, und werte das aus indem du dir alle Pfade in ne Map lädst QMap<int, string>. Die Map hat den Vorteil das alles nur einmal vorkommen kann!
hs60
Beiträge: 31
Registriert: 13. Januar 2010 16:54

Beitrag von hs60 »

Hallo noch einmal!
Eigentlich schon mal was von rsync gehört?
nein - was ist das?

Ich habe mein Problem inzwischen so gelöst, dass ich die einzelnen Dateinamen und Erstellungszeit in eine StringListe schreibe, welche zum Vergleich dient. Die StringListe wird vor Programmende dann in eine Datei abgespeichert. Funktioniert einwandfrei.

Das mit QMap werde ich mir noch anschauen.

Vielen Dank jedenfalls an alle, die mir geholfen haben.

mfg
Herbert
Antworten