[Java] BufferedReader liest nur eine Zeile

MCStreetguy

Stammuser
Hallo Community

Ich versuche grade mit einem Algorithmus eine Datei in ein zweidimensionales Array einzulesen.
Code:
public String[][] getEntries() {
	try {
		reader = new FileReader(db);
		bfreader = new BufferedReader(reader);
		bfreader.readLine();

		String line = bfreader.readLine();
		String[][] temp = new String[getLength()][];
		int i=0;

		while(line!=null) {
			System.out.println(line);
			temp[i] = line.split(";");
			i++;
			line = bfreader.readLine();
		}
		
		return temp;
	} catch(Exception e) {
		e.printStackTrace();
	}
	return null;
}
Die erste Zeile der Datei enthält eine Headerinformation die an dieser Stelle irrelevant ist und daher mit einem zusätzlichen "readLine()" übersprungen wird.
Getrennt sind die einzelnen Einträge einer Zeile mittels Semikolon deshalb der split.
Das Problem ist nun das dieser Code die erste Zeile ordnungsgemäß einliest und trennt, doch ab dann nur noch 'null'-Werte in das Array geschrieben werden. Ein Test wo ich mir vor und nach dem Trennen den String habe ausgeben lassen ergab das ab der ersten Zeile vom BufferedReader nur noch 'null' eingelesen wird.

Könnt Ihr mir eventuell weiterhelfen? Ich finde den Fehler einfach nicht und der Abgabetermin rückt näher :/

Danke schonmal, MCStreetguy
 

lookshe

Member of Honour
Da der Code sonst soweit richtig scheint, kann doch eigentlich nur die Datei irgendwie nicht so sein, wie du es erwartest. Wie sieht denn die erste ausgelesene Zeile, die übersprungen wird, aus?
 

MCStreetguy

Stammuser
Ich habe den Fehler beheben können, auch wenn ich ihn bis jetzt nicht ganz verstehe.

Code:
@SuppressWarnings("finally")
public String[][] getEntries() {
	String[][] temp = new String[getLength()][];
	try {
		reader = new FileReader(db);
		bfreader = new BufferedReader(reader);
		bfreader.readLine();
		
		String line = bfreader.readLine();
		int i=0;
		
		while(line!=null) {
			temp[i] = line.split(";");
			i++;
			line = bfreader.readLine();
		}
	} catch(Exception e) {
		e.printStackTrace();
		return null;
	} finally {
		try {
			bfreader.close();
			reader.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return temp;
	}
}
Ich habe das 'finally' nur der Ordnung halber ergänzt und dann ein wenig damit rumexperimentiert und plötzlich war der Fehler weg, was er auch immer war :eek:
 
Oben