Computer-Masters.de > Artikel > Programmieren > Java > Java: Datei zeilenweise einlesen - BufferedReader

Java: Datei zeilenweise einlesen - BufferedReader

Java Buffered Reader

Möchte man Textdateien in Programmen verwenden, so bietet es sich häufig an, diese zeilenweise auszulesen. Die Java Bibliothek stellt daher für diesen Anwendungsfall den BufferedReader bereit.

Lernen Sie hier anhand eines Beispielcodes, wie man den BufferedReader verwendet.


Java Code

        BufferedReader bufferedReader = null;
        //Der Pfad zur Textdatei
        String filePath ="C:/beispiel.txt";
        File file = new File(filePath);
        try {
            //Der BufferedReader erwartet einen FileReader. 
            //Diesen kann man im Konstruktoraufruf erzeugen.
            bufferedReader = new BufferedReader(new FileReader(file));
          String line;
          //null wird bei EOF oder Fehler zurueckgegeben
          while (null != (line = bufferedReader.readLine())) {
            //Zeile auf der Konsole ausgeben
            System.out.println(line);
            //Hier kann Ihr Code stehen ...
          }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
          if (null != bufferedReader) {
            try {
              bufferedReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
          }
        }
1

Der gezeigte Code gibt die Datei "C:/beispiel.txt" zeilenweise auf der Konsole aus.

Mit bufferedReader.readLine() wird jeweils eine Zeile der Datei ausgelesen und als String zurückgegeben. null wird beim Dateiende (EOF) oder einem Fehler zurückgegeben.

Die Hauptschwierigkeit bei der Verwendung des BufferedReader besteht darin, die I/O-Exceptions richtig abzufangen. Diese sind bei der Verwendung von Dateien leider nicht zu vermeiden und immer zu berücksichtigen.

Mit bufferedReader.close() wird der bufferedReader wieder geschlossen. Hierbei ist darauf zu achten, dass dies in jedem Fall geschehen muss (finally), insbesondere wenn Exceptions aufgetreten sind. Außerdem kann es auch sein, dass der bufferedReader überhaupt nicht instanziiert wurde, deshalb erfolgt vorher eine Prüfung auf null.

Nicht zu vergessen, die benötigten Imports aus der Java Bibliothek:


Java Code

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
1

Links

Dieser Artikel ist auch auf Englisch verfügbar / This article is also available in English:

 

Sie haben noch Fragen?

Nutzen Sie einfach die Kommentarfunktion, die Ihnen auch als unregistrierter Leser zur Verfügung steht!

Gerne wird Ihnen bei Fragen zum Artikel weiter geholfen! Wenn Sie vom Artikel abweichende Fragen haben, können Sie gerne das Forum verwenden!

 

Kommentare

Kommentar von hi | 2016-11-22

StringTokenizer t = new StringTokenizer(s);
String[] Listendinge = {"column1" , "column2"};

while(t.hasMoreElements()) {

for(String Listeneintrag : Listendinge){

if ((t.nextToken()).equals(Listeneintrag))
{
System.out.println("Parameter: ");
var1= in.readLine();
help= s.replace(Listeneintrag, var1);
s = help;

}
}
}

Kommentar von hi | 2016-11-22

hi

Kommentar von Matze | 2013-03-27

Seit Java7 gibts ne schöne Möglichkeit das Exception-Handling zu vereinfachen, nennt sich dann "try-with-resources" (http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html && http://www.nosid.org/java-try-with-resources.html). Das obige Bsp sieht damit dann so aus:

String filePath ="C:/beispiel.txt";
File file = new File(filePath);
try(BufferedReader reader = new BufferedReader(new FileReader(file)) )
{
String tmp;
while( (tmp=reader.readLine()) != null)
{
System.out.println(tmp);
}
reader.close();
}
catch (IOException e)
{
e.printStackTrace();
}

Sollte in den runden Klammern des trys etwas fehlschlagen, werden eventl. offene Streams geschlossen.

Computer-Masters.de > Artikel > Programmieren > Java > Java: Datei zeilenweise einlesen - BufferedReader

Anzeige: