Java 8: Inhalt einer Datei auslesen und filtern

Oft müssen ja irgendwelche Inhalte einer Datei eingelesen und weiterbearbeitet werden. In dem Teil der Java-Serie zeige ich euch, wie ihr den Inhalt einer Textdatei auslesen und den Text filtern könnt. Damit mit einer Datei gearbeitet werden kann, benötigt man einen sogenannten Stream. Das kann man sich als eine Verbindung zu der Datei vorstellen. Durch diese Verbindung zu der Datei können dann Datenströme fließen.
Damit man eine Datei auslesen kann, muss man diese drei Schritte berücksichtigen: Datei öffnen, Inhalt einlesen und anschließend die Datei wieder schließen.

Zunächst müsst ihr wieder dieses Package importieren:

 
import java.io.FileReader;

Hier ist der passende Code dazu:

 
         String aktline = "";
         BufferedReader inFile = new BufferedReader (new FileReader ("D:\\Logfile.txt"));
         aktline = inFile.readLine();

         while (aktline!= null)
         {
            System.out.println(aktline);
            aktline = inFile.readLine();  
         }
         inFile.close();

Für die nächste Aufgabe müsst ihr noch einen weiteren Befehl kennen. Mit diesem Befehl könnt ihr heraussuchen, ob der Inhalt einer Variablen mit einem bestimmten Wort beginnt.

Variable.startsWith ("Wort");

Jetzt zur eigentlichen Aufgabe: Es soll ein Programm geschrieben werden, mit welchem man eine Datei mit dem Namen Logfile.txt auslesen kann. Das Textfile soll diesen Text enthalten:

Action: Starting system

Action: Calculating  memory

Warning: Not enough memory

Error: Access denied

Action: Open network drive

Den Inhalt dieser Datei sollen die Benutzer filtern können. Er wird also beim Start des Programms aufgefordert, entweder Action, Warning oder Error einzugeben. Wenn er das gemacht hat, werden nur die Meldungen mit dem jeweiligen Befehl ausgegeben.

Euer Programm sollte ungefähr so aussehen wie dieses Beispiel:

 
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package dateinzugriff2;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.FileReader;

/**
 *
 * @author Andreas
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        
    try {

         BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

         System.out.println("*********************");
         System.out.println("***  Datenzugriff ***");
         System.out.println("*********************");

         System.out.println("Geben Sie die Art der gewünschten Meldung ein (Action | Warning | Error)");
         String Meldung;
         Meldung = input.readLine();
         
         String aktline = "";
         BufferedReader inFile = new BufferedReader (new FileReader ("D:\\Logfile.txt"));
         aktline = inFile.readLine();
         
         while (aktline!= null)
         {
            if (aktline.startsWith (Meldung))
            {
            System.out.println(aktline);
            }
            aktline = inFile.readLine();   
         }
         inFile.close();
                  
    }
    
        catch(Exception ex)
         {
  System.out.println("Irgendwas ist schief gelaufen !!!");

  System.out.println(ex.getMessage() );

       }

        // TODO code application logic here
    }

}

Ich beschreibe jetzt nur die wichtigsten Schritte und nicht jeden kleinsten Punkt, der abgehandelt wird.

  • In den Zeilen 30 bis 32 fordert man den User auf, den jeweiligen Befehl einzugeben. Die Usereingabe wird anschließend in der Variable „Meldung“ gespeichert.
  • In den Zeilen 34 bis 36 lesen wir die erste Zeile der Datei Logfile.txt ein.
  • In der Zeile 38 beginnt die while-Schleife, mit welcher man so oft die nächste Zeile einließt bis in einer Zeile gar nichts mehr steht.
  • In der Zeile 40 lassen wir über eine if-Abfrage nur das aus der Textdatei ausgeben, was der Benutzer auch sehen möchte.
  • In der Zeile 44 wird immer die nächste Zeile der Textdatei ausgelesen.
  • In der Zeile 46 schließen wir die Textdatei wieder.

Hier geht es zu den bisherigen Teilen der Artikelserie Java:

1 Gedanke zu „Java 8: Inhalt einer Datei auslesen und filtern“

  1. Du kommst ja gut vorran in dem Kurs. Wenn mal Zeit ist, arbeite ich da mal verschiedene Dinge ab, die du gepostet hast um mich auch mal etwas mit Java zu beschäftigen. Dazu gibt es ja noch das schicke Java2Brain oder wie sich diese Reihe von Video Tutorials nennt die man käuflich erwerbene kann.

    Antworten

Schreibe einen Kommentar