gibt es die Möglichkeit während des Programmablaufs zu bemerken wenn eine datei geändert wurde.
habe in dieser Datei property daten gespeichert. Manche davon kann man während der abarbeitung ändern.
Ist es möglcih das andere welche auf die gleiche proberty daten zugreifen, diese änderung bemerken. und reagieren können.
hmm das ist natürlich blöd, weil wenn einer was ändert, sollen alle mit den geänderten Werten weiterrechnen.
es hat ja eigentlich auch jeder die datei mal geöffnet oder hat sie sogar noch auf, weiß garnicht ob ich die probertie datei schließe.
aber nach einer gewisen zeit zu prüfen ob sich der stand der datei oder besser gesagt der eigenschaft geändert hat, indem ich sie nochmal lese und vergleiche ist auch nicht so das whre oder, das ist doch bestimmt sehr rechenaufwendig das jede minute oder sozu machen
aber nach einer gewisen zeit zu prüfen ob sich der stand der datei oder besser gesagt der eigenschaft geändert hat, indem ich sie nochmal lese und vergleiche ist auch nicht so das whre oder, das ist doch bestimmt sehr rechenaufwendig das jede minute oder sozu machen
Du kannst es doch auch jedes mal lesen, wenn du die Werte benötigst. Ist natürlich langsamer, als wenn du die Datei nur einmal einliest, aber auf jeden Fall sinnvoller als in regelmäßigen Abständen immer neu zu lesen.
Es gibt auch Systembibliotheken für so was. Unter Linux FAM, bzw gamin. Ob es dafür Java-Schnittstellen gibt, weiß ich jedoch nicht. Außerdem bist du dann wieder plattformabhängig.
was das observer konzept ist, weiß ich verwende es auch ein bischen in meinem mvc concept also modell sagt view ich habe mich geändert.
Nur weiß ich jetzt nicht so genau, wie ich das auf mein problem anwenden soll, also wie kriegt das modell (Datei) mit das sie geändert wurde.
Soll ich das also über einen thread regelmäßig abfragen oder gibts es da einen anderen weg.
Wie ich dann darauf reagiere weiß ich, nur eben nicht wie ich es mitbekomme.
Ich finde wie gesagt die Variante des neu Lesens bei Zugriff nicht verkehrt. Wie häufig wird auf diese Werte denn zugegriffen? Wäre der Overhead zum Öffnen und Parsen der Datei so schlimm für dich?
du könntest auch File#lastModified() oder wie das genau heißt verwenden, wenn du eine Property brauchst. Wenn die letzte Änderung länger her ist als die gelesenen Werte alt sind, hat sich was verändert.
Das wäre wohl ressourcenschonender als jedes Mal pauschal alles neu einzulesen.
Allerdings kann es sein, dass eine Anwendung das Datum der letzten Änderung verändert. Ist also nicht ganz sicher.
meine idee:
1) nen thread min min priorität laufen lassen, und lastModified() der datei abrufen und intern vergleichen.
2) dann die anderen eben benachrichtigen (observer)
wenn das schonma geschrieben wurde, tuts mir leid, hab nicht alles gelesen :wink:
na die änderung gebt auf einen prozess zurück, und dieser wird mal ganz oft hintereinander ausgeführt und dann mal wieder ne halbe stunde oder wie lang nicht. habe ja auch schon überlegt jedes mal beim fokusieren der view die daten neu auszulesen.
@madboy, was meinst du damit das ein programm das datum ändern könnte meinst d wenn ich das von außen über einen texteditor ändere oder auf welches program spielst du an?
Ist wie gesagt eine proberties also eine textdatei
Wenn eine Datei geändert wird muss das Änderungsatum nicht zwingend aktualisiert werden (zumindest unter Linux lässt sich das wohl unterbinden). Auch lässt sich das Datum mit Hilfe diverser Programme manipulieren.
Aber das wird wohl eher die Ausnahme sein. Im Normalfall kann man sich auf das Änderungsdatum verlassen