News Ticker

Java 8: Inhalt einer Datei auslesen und filtern

Oft benötigt müssen ja irgendwelche Inhalte einer Datei eingelesen und weiter bearbeitet werden. In dem Teil der Java Serie zeige ich euch wie ihr den Inhalt einer Textdatei auslesen könnt und den Text filtern könnt. Damit mit einer Datei gearbeitet werden kann benötigt man einen so genannten 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 3 Schritte berücksichtigen: Datei öffnen, Inhalt einlesen und anschließend die Datei wie der 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 der 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 Benutzter filtern können. Er wird also beim Start des Programms aufgefordert entweder Action, Warning oder Error ein zu geben. Wenn er das gemacht hat werden nur die Meldungen mit dem jeweiligen Befehl ausgegeben.

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/*
 * 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 der Zeile 30 bis 32 fordert man den User auf, den jeweiligen Befehl ein zu geben. Die Usereingabe wird anschließend in die Variable “Meldung” gespeichert.
  • In der Zeile 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 Benutzter 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:

Java 1: Netbeans die ersten Schritte und Hello World

Java 2: Rechnen mit Variablen

Java 3: Werte einlesen, zwischenspeichern und wieder ausgeben

Java 4: Kassen Programm mit if Abfrage

Java 5: Kassen Programm while, do-while Schleife

Java 6: Kassen Programm For Schleife

Java 7: Array – Lotto Programm erstellen

1 Kommentar zu Java 8: Inhalt einer Datei auslesen und filtern

  1. Christian // 14. Jul 2009 um 19:21 //

    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.

Kommentare sind deaktiviert.