Auslesen einer größer werdenden Datei

Gorr

Grünschnabel
Hi,
mein Titel sollte schon ein bisschen mein Problem darstellen. Es geht darum, ich muss Zeilen aus einer Textdatei auslesen (was ja kein Problem wäre), nur diese Datei wird während der Laufzeit länger, also während mein Java Programm läuft wird automatisch was in die Datei hineingeschrieben.
Mein Java Programm soll eben die ganze Zeit im Hintergrunde laufen und dabei alle Zeilen auslesen, auch die, die dann neu dazu kommen (Die Zeilen werden dann verwertet, aber ist hier eh egal).

Hier ist das dann Problem, ich habe schon probiert über RandomAccesFile.readLine und das in einer Endlosschleife, nur kommt dann eine NullPointerException, weil das readLine ja mal eine Zeitlang nichts einliest.

Dann hab ich Probiert über den Inputstream mit BufferedReader und readLine, doch wenn ich den StandardInputStream auf eine Datei setze passiert das selbe wie oben, also er "wartet" beim readLine nicht und es kommt eine .NullPointerException Komischerweise, wenn ich den StandardInputStream lasse wie er ist, also Über die Tastatur was eingebe, "wartet" er bei readLine, bis ich was neues eingebe.

Hoffe, ich habe alles klar geschildert, falls nicht, einfach sagen;)

Sonst fällt mir nichts ein, wie ich es noch probieren könnte.
Würde mich über Hilfe freuen (falls wem was einfällt).
 
Moin,

ich würde es mal mit RandomAccessFile versuchen!

Ich habe sowas ähnlich damit beim Schreiben/Anhängen in eine Datei gelöst!
seek legt dabei die Position innerhalb der Datei fest, ab der weiter geschrieben oder auch gelesen werden soll. Die mußt dann ggf. merken

Kleines Code-Beispiel:
Code:
RandomAccessFile rafOutPut = null;
	try
	{
		rafOutPut = new RandomAccessFile( "Test.txt" , "rw" );
		rafOutPut.seek( rafOutPut.length() );

// hier halt die passende read-Fkt. verwenden!!
//		rafOutPut.writeChars( strRes + "\n" );
	}
	catch( IOException e )
	{
		e.printStackTrace();
	}

Hoffe, ich konnte helfen!
tschüss
Klaus
 
Danke killerkirsche, das war es, ich hatte nur equals() statt != verwendet und deswegen hat das nicht funktioniert:rolleyes:
 
Die Methode geht zwar, mit dem !=null, aber es ist sehr ressourcenfressend, da es sich solange es null liest in einer Endlosschleife befindet (ich muss ja warten, bis wieder Text eingelesn wird). Kann man das vllt irgendwie umgehen, dass es da pausiert und nur alle x millisekunden überprüft, oder so etwas in der Art?
 
jo, haben threads in der schule gelernt, muss nur in meinen alten unterlagen wieder das wissen holen

Hatte ich auch im Hinterkopf mit Threads, aber dachte, dass es da vllt eine einfachere Variante gibt, naja nochmals danke:D
 
Wenn ich Dich richtig verstanden hatte, ist Dein Programm unabhängig von dem Programm was da die zu lesenden Dateien schreibt.
Demnach tut Dein Programm nichts Wesentliches weiter als die hier von Dir beschriebene Aufgabe. Ich würde da schlicht nur ein Thread.sleep(...) verwenden, Da Dein Programm getrost ein Singlethread-Programm, so ich es richtig verstanden habe, bleiben kann.
 
Zurück