String überprüfen

fm it

Mitglied
Wie kann ich überprüfen ob in einem String etwas steht und wann genau etwas reingeschrieben wird am besten mit nem Listnerer weil ich will etwas ausführen wenn etwas in die Datei geschrieben wird.
 
Hi fm it,

bitte präzisier deine Frage ein wenig. Welcher Vorgang wird durchgeführt? Wann willst du eingreifen? Wird mit deinem Programm in eine Datei geschrieben?
Falls ja, dann wäre auch ein kleiner Source-Code Ausschnitt praktisch.

Konkret verstehe ich nicht, was du eigentlich machen willst.

Grüße,
BK
 
Ein anderer Befehlt schreibt in einen String immer etwas rein, sagen wir wenn wir einen email empfangen. Und wenn dies ppassiert soll gleichzeitig oder kurz danch etwas in ein textdokument geschrieben werden ich hatte an Listener gedacht.
 
Hi,

was meinst du mit Befehl? Ein anderes Programm? Worauf hast du Zugriff, bzw. an welche Stelle könntest du in den Workflow (Abfrage ob Mail gekommen, Verändern des Strings, Schreiben in Textdokument) eingreifen?

Vorab: Nein, es gibt keinen Listener den du auf einen String legen kannst, da Strings immutable sind. Bei jeder Veränderung wird ein neues String Objekt erstellt.

Jetz mal mit Hilfe meiner Glaskugel ins Blaue rein:
Du könntest die Klasse, die auf neue Mails checkt um das Observer Pattern erweitern. Sobald eine Mail ankommt, feuerst du das Event ab und alle Observer werden benachrichtigt.

Grüße,
BK
 
Hmm. schade :(
gibt es den einen listener wenn ein neuer string gemacht wird ?
mit der email war nur ein Bespiel. Ich habe auf die Klasse zugriff. Die String verändert sich sändig sprich neuer Inhalt. Aber ich kann doch bestimmt abfragen ob sich die Strinfst verändert haben mit einer if abfrage oder ?
 
Hi,

Fix 2 Möglichkeiten:

Erstelle dir eine eigene Klasse "MyString", die von String erbt. Diese bietet über eine statische Methode die Möglichkeit, einen Observer hinzuzufügen. Also quasi das Observer Pattern, nur statisch implementiert halt. Dann überschreibst du alle Kontruktoren, die du brauchst, und fügst in diesen dann einen Aufruf an die update-Funktion des Listeners hinzu.

Dann arbeitest du nicht mit normalen Strings, sondern mit deiner eigenen Klasse. Dadurch, dass du von String erbst, kannst du das Objekt auch wie jeden anderen String verwenden (Up-Casting).

2. Du erstellst einen Thread, der in regelmäßigen Abständen den String auf eine Änderung überprüft. Hierzu muss sich der Thread bei jeder Änderung den neuen Zustand des Strings merken um ihn bei der nächsten Überprüfung nicht nochmal als Änderung erkennt.

Ich würde Methode 1 bevorzugen, die wirkt auf mich sauberer. Die zweite Methode ist vielleicht einfacher, braucht aber mehr Leistung und läuft nicht in Echtzeit. Je nachdem wie schnell der Wert geändert wird kann bei Methode 2 eine Änderung verloren gehen.


Grüße,
BK
 
Dazu braucht man kein Beispiel, denn es geht nicht. String ist final!

Da du scheinbar nur daran interessiert bist, dass sich eine Datei ändert, solltest du dir vielleicht mal das hier anschauen: http://www.tutorials.de/java/387258-filesystemwatcher-aquivalent-java.html
Sollte sich eine Datei geändert haben, kannst du ja nach deinem String suchen, zur not auch nochmal vergleichen. Das sollte deinem Ziel wohl eher entsprechen.
 
In deinem ersten Post steht, dass ein anderes Tool was in eine Datei schreibt. Diese musst du dann logischerweise überwachen, oder wie willst du merken, dass der Inhalt geändert wurde? Alle 5 Millisekunden einlesen und prüfen? Würd ich dir nicht empfehlen ^^
 
Zurück