PI4 Logo

Übung Praktische Informatik I (Hinweise zu Blatt 4)

I/O Operationen in Java

Zur Lösung des Übungsblattes Nr. 4 (und vieler weiterer Übungsblätter) ist es notwendig, Daten von der Tastatur entgegenzunehmen bzw. aus einer Datei auszulesen.

1. Dateneingabe von der Tastatur

Diese Operationen unterscheiden sich vom Auslesen der Kommandozeilenparameter! Kommandozeilenparameter werden beim Programmstart angegeben, Eingabeoperationen verlaufen interaktiv im Verlauf des Programmablaufes.

1.1. Beispiel

Da eine solche Operation nicht im Rahmen der Vorlesung behandelt wird, folgt ein Beispiel:

Das nachfolgende Java-Programm liest eine Integer-Zahl ein und gibt diese anschließend wieder aus:

import java.io.*;

public class IOBeispiel
{
  public static void main(String[] args)
    {
      System.out.println("IO-Beispiel\n");


      String zeile= "";
      int    wert;
     
      BufferedReader in= new BufferedReader(new InputStreamReader(System.in) );

      try {
        zeile= in.readLine();
      } catch (IOException ioe) {}

      wert= Integer.parseInt(zeile);

      System.out.println("wert= " + wert);
    };
};

Wird das Programm gestartet, so wird der String "IO-Beispiel" auf dem Bildschirm ausgegeben. Anschließend wartet das Programm auf eine Eingabe des Benutzers, der nun kann eine Zahl eingegeben kann (Abschluß der Eingabe mit der Return-Taste). Die Eingabe wird zunächst in der String-Variablen zeile abgelegt und anschließend mit Hilfe von Integer.parseInt(zeile) wieder ausgegeben. Falls die Eingabe kein Integerwerten ist, wird das Programm mit einem Fehler (Exception) abgebrochen.

Beispielaufruf (unterstrichener Text spiegelt Tastatureingaben wieder):

 > java IOBeispiel
IO-Beispiel
1234
wert= 1234


Zum Lösen der Übungsaufgabe ist es nicht notwendig, genau zu verstehen, was sich hinter einem BufferedReader-Objekt verbirgt! Das Beispiel sollte jedoch vergleichsweise leicht zum Lösen der Übungsaufgaben angepaßt werden können.

1.2. Zusatzinformationen

Hier noch ein Auszug aus der API-Dokumentation von Java-Soft:

readLine

public String readLine() throws IOException
Read a line of text. A line is considered to be terminated by any one of a line feed ('\n'), a carriage return ('\r'), or a carriage return followed immediately by a linefeed.
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
Throws:
IOException - If an I/O error occurs

1. Dateneingabe aus einer Datei

Die Eingabe von Daten aus einer Datei erfolgt in ähnlicher Weise wie die Eingabe von der Tastatur. Auch hier ist das genaue Verständnis der vorgestellten Klassen nicht notwendig.

1.1. Beispiel

Das nachfolgende Beispiel liest 64 Integerwerte aus einer Datei aus, deren Name per Kommandozeile übergeben wird. Die eingelesenen Werte werden sofort wieder ausgegeben.
import java.io.*;
import java.util.StringTokenizer;

public class IOBeispiel
{
  public static void main(String[] args)
    {
      String zeile= "";
      int    wert;

      FileReader fr= null;
      BufferedReader in= null;

      try {
        fr= new FileReader(args[0]);      
        in= new BufferedReader(fr);
      } catch(FileNotFoundException fnfe) {}

      for (int i= 0; i < 8; i++)
        {
          try {
            zeile= in.readLine();
          } catch (IOException ioe) {}

          StringTokenizer st= new StringTokenizer(zeile);
          for (int j= 0; j < 8; j++)
            {
              String s= st.nextToken();
              wert= Integer.parseInt(s);
              System.out.print(wert + "\t");
            }
          System.out.println("");
        }
    };
};

Beispielaufruf (unterstrichener Text spiegelt Tastatureingaben wieder):

 > java IOBeispiel test.txt
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      62      63      64





Christoph Kuhmünch <cjk@pi4.informatik.uni-mannheim.de>
Last modified: Wed Dec 1 16:56:43 MET 1999