Textdatei in Java auslesen

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo Leute,

hier ist mein Code zum Auslesen von Textdateien.

Code:
import java.io.*;


public class importieren {

	
	public static void main(String[] args)throws IOException {
		
		//Datei einlesen
	 	FileReader reader= new FileReader("C:/Acer/datei.txt");
		//Übergabe an BufferedReader
	 	BufferedReader br= new BufferedReader(reader);
		
		//Array  erstellen
		String [] s = new String [10] ;
		
		//Array soll zeile für zeile mit den werten belegt werden
		for(int i = 0; i < s.length;i++){
			s [i]=br.readLine();
			System.out.println(s[i]);
		}
		
		//Beenden
		reader.close();
		br.close();
		
		}
		
	}

Was mir nicht gefällt, ist die fehlende Information über die Anzahl der Zeilen in der Textdatei. So muss ich die Anzahl für den Array schätzen und habe dann entweder zu wenig Zeilen oder viele NULL-Zeilen.

Gibt es die Möglichkeit die Anzahl der Zeilen rauszufinden?

Vielen Dank

Daniel
 
Benutze doch einfach anstelle eines String Arrays eine Collection, wie z.B. eine ArrayList. Dann legst du dich nicht auf eine bestimmte Anzahl fest.

Code:
List<String> s = new ArrayList<String>();
String line;

while ((line = br.readLine()) != null) {
      s.add(line);
      System.out.println(line);
}

//...

System.out.println("Die Datei hat "+s.size()+" Zeilen");
 
@ Prismapanda

dein Code scheint bei mir nicht zu laufen. liegt wohl daran, ArrayList keine "length"-Methode hat, sondern "size", aber es bringt mich nicht weiter, da "size" noch nicht existiert.

Bei der ArrayList seh ich nur die Möglichkeit über Endlosschleife zu lösen, aber das ist nicht der Sinn der Sache. Außerdem muss ich ein !=null Vergleich machen und wenn es sich um die Leerzeile handelt, bricht das Programm ab und die nachkommenden Zeilen werden nicht angezeigt.
 
Klasse, seh gerade, dass du einen neuen Code geladen hast. Der funktioniert super, danke schön.

Aber angenommen im Text befindet sich eine Leerzeile, was dann? Dann brich ja der Vorgang ab und die restlichen Zeilen fehlen.
 
Hast du es ausprobiert?
BufferedReader
...
public String readLine() throws IOException
...
Returns:
A String containing the contents of the line, not including any line-termination characters, or null if the end of the stream has been reached
Eine Leerzeile erzeugt einen leeren String (""), nicht den null-Wert.
 
stimmt ja :-D. Man ist das peinlich. Ich hab zwar paar Leerzeilen im Dokument erstellt, aber nicht abgespeichert.

Es funktioniert. Vielen Dank.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben