Seite 1 von 1

Event bei Schreibvorgang/Größenänderung einer Datei

Verfasst: Montag 18. September 2006, 08:48
von magnat
Hallo zusammen,

ich möchte aus einer (csv)-Datei Werte auslesen und diese visualisieren. Diese Datei wird in mehr oder weniger regelmässigen Abständen (ca. 100 ms) aktualisiert (d.h. die Datei wächst).
Ich könnte jetzt natürlich in einer Schleife die Dateigröße abfragen und daraus schließen ob neue Werte hinzugekommen sind, jedoch finde ich das nicht gerade elegant und ausserdem wird durch das Pollen das System recht stark ausgelastet.
Gibt es nun die Möglichkeit (ich habe bisher vergeblich gesucht), dass ein Event ausgelöst wird, wenn sich die Dateigröße ändert bzw. ein Schreibzugriff stattgefunden hat? Ein Windows-Explorer-Fenster checkt ja recht schnell, wenn etwas auf dem Laufwerk passiert. Prinzipiell müsste also etwas in der Art in Windows schon vorhanden sein.

Für jegliche Hilfe bin ich sehr dankbar.

H.V.

Verfasst: Montag 18. September 2006, 19:19
von BlackJack
Ich denke es sprechen mehrere Gründe gegen so eine Lösung. Zum Beispiel wächst die CSV Datei, um den letzten Datensatz auszulesen musst Du aber immer die komplette Datei lesen, weil man Zeilen in Textdateien im allgemeinen nicht direkt anspringen kann.

Und Du musst immer mit berücksichtigen, das es sein kann, dass der benachrichtigte Prozess durch irgend einen Umstand behindert oder verzögert wird, so dass sich das Auslesen mit dem nächsten Schreibzugriff auf die Datei überschneidet.

Ansonsten dürfte Polling gar nicht so teuer sein. Es muss ja nur auf das Dateidatum geprüft werden und da diese Datei in so regelmässigen und kurzen Abständen verändert wird, sind die nötigen Daten immer im RAM.

Falls Du auch Kontrolle über den schreibenden Prozess hast, würde vielleicht eine Interprozesskommunikation in Frage kommen. XML-RPC oder so.

Verfasst: Dienstag 19. September 2006, 07:15
von Nirven
Hm, grundsätzlich muss sowas schon irgendwie gehen. Mit less zum Beispiel kann ich mir wachsende Logzeilen in Echtzeit angucken, sicher auch mit anderen Programmen. Probleme gibt es eigentlich nur, wenn die Datei zwischendurch truncated wird.
Es sollte also funktionieren, bei dem wie... :K