EOF

Status
Nicht offen für weitere Antworten.

julchen81

Bekanntes Mitglied
Guten Morgen!

Wieso bitte produziere ich hier eine Endlosschleife? Was ist an meiner while-Bedingung falsch?

Code:
import java.io.*;

public class ReadFileLines {
	
	public static void main(String[] args)throws FileNotFoundException, IOException {
		File datei = new File("S:/text.txt");
		BufferedReader in = null;
		String zeile = "";
		
		in = new BufferedReader (new FileReader(datei));
		
		
		int i = 1;
			
		while (!("EOF".equals(zeile = in.readLine()))) {
			zeile = in.readLine();
			System.out.println("Zeile " + i +  ": " + zeile);
			i++;
		}
		System.exit(0);
	}
}

Viele Grüße, :wink:
Julia
 

julchen81

Bekanntes Mitglied
Das ist mir auch gerade klar geworden.

Hab' jetzt eine andere Lösung gefunden:

Code:
int i = 1;
zeile = in.readLine();
while (!(null == zeile)) {				
    System.out.println("Zeile " + i +  ": " + zeile);
    i++;
    zeile = in.readLine();
}

so funktioniert's prächtig und ich brauche kein EOF.

Liebe Grüße,
Julia
 

julchen81

Bekanntes Mitglied
Das schaut natürlich gleich sehr viel eleganter aus... dankeschön! :wink:

allerdings musste ich noch eine Klammer setzten:
Code:
while (null != (zeile = in.readLine()))

In der Konsole funktioniert das einwandfrei. Komischerweise erhalte ich beim Ausführen mit Eclipse zuerst einige 1000 (??) Zeilen folgendermaßen:
...
Zeile 1199: null
Zeile 1200: null
....

Dann folgt nach ca. 0,5 Sekunden meine gewünschte Ausgabe:

Zeile 1: Wir lesen ein
Zeile 2: diesmal
Zeile 3: Java. das wars.

Wie gibt's denn das??


Julia
 

Kim Stebel

Bekanntes Mitglied
merkwürdig...geh mal mit nem debugger durch und guck es dir zeile für zeile an...vor allem was readline zurückgibt. und poste noch mal den ganzen code bitte.
 

julchen81

Bekanntes Mitglied
ich habe jetzt gerade meinen Computer noch mal neu gestartet und nun funktioniert's reibungslos. Habe den Verdacht, dass ich meine vorherigen Endlosschleifen nicht beendet hatte... wie macht man denn das bei Eclipse, weißt du das zufällig?

Falls du's noch wissen möchtest, hier der ganze Code:
Code:
import java.io.*;

public class ReadFileLines {
	
	public static void main(String[] args)throws FileNotFoundException, IOException {
		File datei = new File("S:/Fertigungsdienste_Admin/Projekte-Praktikanten/Krieg Stefanie/JTest1/src/text.txt");
		BufferedReader in = null;
		String zeile = "";
		
		in = new BufferedReader (new FileReader(datei));
		
		int i = 1;
		while (null != (zeile = in.readLine())) {				
			System.out.println("Zeile " + i +  ": " + zeile);
			i++;
		}
		System.exit(0);
	}	
}

Danke für deine Hilfe!!

Julia
 
S

SlaterB

Gast
im Konsolenfenster den roten Knopf drücken und inaktive Konsolen entfernen und weiter roten Knopf drücken bis alles weg ist,
oder Strg Alt Entf und alle Java-Prozesse beenden (beendet auch Eclipse wenn man nicht aufpasst)
 

julchen81

Bekanntes Mitglied
strg+Alt+Entf hätte ich probiert und auch alles beendet (auch natürlich aus Versehen Eclipse :D ), aber es war im Task-Manager kein Prozess zu sehen... trotzdem war mein Computer plötzlich ganz langsam, daher die Vermutung, dass da trotzdem noch irgendwas im Hintergrund lief.

Computer sind einfach rätselhaft :wink:

Vielen Dank!
Julia
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben