Java Datei kontinuierlich lesen ohne Schreiben zu blocken

ich5003

Cadet 3rd Year
Registriert
Mai 2014
Beiträge
38
Hey Leute,

ich habe grade ein kleines Problem.
Und zwar habe ich ein Programm, welches dauerhaften Daten in eine Datei schreibt (konkret handelt es sich um ein RFID-Lesegerät, um gelaufene Runden zu zählen).
Da ich nun eine Liveauswertung der Daten vornehmen möchte, brauche ich ein Programm, welches dauerhaft die Datei mitliest. Hier entsteht nun aber folgendes Problem:
Wenn ich in Java (egal wie ich es bisher verwendet habe) die Datei mitlese, dann schreibt das andere Programm nicht mehr in die Datei, wobei es nicht einmal ein Schreibrechten mangelt, da ich mit Notepad++ die Datei auch während des Lesevorgangs verändern kann.
Ich brauche nun also eine Möglichkeit mit Java eine Datei mitzulesen, OHNE dass für ein anderes Programm sichtbar ist, dass diese Datei in Verwendung ist.

Eine weitere Möglichkeit wäre alle Schreibvorgänge in die Datei direkt in Java weiterzuleiten, aber ich weiß nicht, ob das möglich ist.

Danke,
Lucas
 
Zuletzt bearbeitet:
Findet man einiges zu bei google. Such mal nach "java read file while its written" und such dir eine der vielen Lösungen aus.
 
Die Möglichkeiten hab ich schon verushct. Das Problem ist, dass das andere Programm anscheinend erst untersucht, ob eine Datei grade in Verwendung ist.
 
Ich werde den Tag loben an dem jemand der eine Frage stellt auch den Code dazu postet...

Die Frage wäre zum einen wie du das ganze auf die Datei schreibst, und wie du es davon lesen möchtest... und MUSS auf die Datei dauerhaft geschrieben werden?
 
andy_m4 schrieb:

Ich hab es jetzt mit dem Tailer gemacht.
Zwar etwas anders als beschrieben.
Und zwar setze ich den Pointer zu Beginn ans Ende der Datei. Dann prüfe ich dauerhaft, ob der Pointer immernoch am Ende der Datei sitzt.
Erst falls dies nicht mehr der Fall ist, lese ich den neuen Inhalt, schließe die Datei wieder und beginne wieder von vorne.

Lacritz schrieb:
Ich werde den Tag loben an dem jemand der eine Frage stellt auch den Code dazu postet...

Die Frage wäre zum einen wie du das ganze auf die Datei schreibst, und wie du es davon lesen möchtest... und MUSS auf die Datei dauerhaft geschrieben werden?
Zu diesem Zeitpunkt hatte ich noch keinen effektiven Code, ich hatte in paar Möglichkeiten ausprobiert, die alle nicht funktionierten.
Ja, es muss die ganze Zeit in die Datei geschrieben werden, da das Schreibprogramm nicht von mir stammt, habe ich darauf keinen Einfluss.
Wie ich es lese ist eigentlich egal (so, dass ich eben neue Zeilen am Ende mitbekomme), hauptsache das andere Programm schreibt weiterhin in die Datei.
 
ich5003 schrieb:
Ich hab es jetzt mit dem Tailer gemacht.
Zwar etwas anders als beschrieben.
Und zwar setze ich den Pointer zu Beginn ans Ende der Datei. Dann prüfe ich dauerhaft, ob der Pointer immernoch am Ende der Datei sitzt.
Erst falls dies nicht mehr der Fall ist, lese ich den neuen Inhalt, schließe die Datei wieder und beginne wieder von vorne.
Achso. Die Datei wird gar nicht fortlaufend beschrieben (im Sinne von ständig was hinten angehängt), sondern quasi jedesmal neu erzeugt/überschrieben.
Ist das dann nicht eher ein Fall für inotify und Co?
Dann hast Du auch keine Rechenzeitverschwendung mit "pollen".
 
andy_m4 schrieb:
Achso. Die Datei wird gar nicht fortlaufend beschrieben (im Sinne von ständig was hinten angehängt), sondern quasi jedesmal neu erzeugt/überschrieben.
Ist das dann nicht eher ein Fall für inotify und Co?
Dann hast Du auch keine Rechenzeitverschwendung mit "pollen".

Das ist eine gute Frage, da bin ich mir garnicht sicher, das kann natürlich gut sein.
Das Problem hat sich mittlerweile aber anders gelöst, indem ich mit einem SerialSniffer die Verbindung zwischen dem Programm und dem RFID-Leser untersucht habe und darauf aufbauend meine eigene Serialschnittstelle zusammengestellt habe :D
Trotzdem danke.
 
ich5003 schrieb:
Das Problem hat sich mittlerweile aber anders gelöst, indem ich mit einem SerialSniffer die Verbindung zwischen dem Programm und dem RFID-Leser untersucht habe und darauf aufbauend meine eigene Serialschnittstelle zusammengestellt habe :D
Sehr clever.
Danke für das Feedback.
 
Zurück
Oben