Seite 1 von 1
[gelöst] QFile Attribute lesen und setzen
Verfasst: 2. Februar 2010 18:28
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
Verfasst: 2. Februar 2010 19:00
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ß
Verfasst: 2. Februar 2010 19:38
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
Verfasst: 2. Februar 2010 20:50
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.
Verfasst: 3. Februar 2010 06:28
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
Verfasst: 3. Februar 2010 06:32
von Christian81
Wo sollte QFileSystemwacher das speichern bzw. herwissen?
Das musst du schon selbst übernehmen...
Verfasst: 3. Februar 2010 09:06
von upsala
Eigentlich schon mal was von rsync gehört?
Verfasst: 3. Februar 2010 11:19
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!
Verfasst: 3. Februar 2010 11:34
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