Angewandte Informatik

Universität Osnabrück , 18.6.2001

Dr. Ute Schmid

letzter Abgabetermin: 25.6.2001, 8:00 Uhr

Elmar Ludwig

Übungen zu Informatik B

Sommersemester 2001

Blatt 9

Aufgabe 1 (7 Punkte)

Machen Sie sich mit dem Paket java.io zur Ein- und Ausgabe in Java vertraut.

Welches sind die wichtigen (abstrakten) Basisklassen in diesem Paket und was für Methoden stellen diese jeweils zur Verfügung? Welche Ein- bzw. Ausgabe-Ströme enthalten Verweise auf andere Ströme und wozu? Warum gibt es die Unterscheidung zwischen Byte- und Character-Strömen?

Zu welcher der beiden Kategorien gehört System.in und warum? Wie erzeugen Sie sich einen Byte- oder Character-Strom, der den Inhalt von mehreren Dateien als einen gepufferten Datenstrom zur Verfügung stellt? Was machen Sie, wenn Sie zusätzlich noch Daten zurück in den Datenfluß stecken wollen?

Aufgabe 2 (5 Punkte)

Schreiben sie unter Verwendung von Klassen aus java.io ein Java-Programm, daß über die Kommandozeile zwei Dateinamen (Eingabe- und Ausgabedatei) bekommt und den Inhalt der ersten Datei als Text in die zweite Datei kopiert. Dabei soll allerdings die Reihenfolge der Zeilen umgekehrt werden, d.h. die erste Zeile der Eingabedatei landet als letzte Zeile in der Ausgabedatei, die zweite Zeile wird vorletzte Zeile usw.

Beachten Sie bei der Implementation auch mögliche Fehler, die auftreten können.

Aufgabe 3 (3 Punkte)

Implementieren Sie eine eigene Unterklasse von java.io.InputStream , die als Eingabequelle keine Datei verwendet, sondern statt dessen von einem Random-Objekt erzeugte zufällige Bytes als ,,Eingabe`` liefert.

Schreiben sie damit ein kleines Java-Programm, daß eine Datei mit einer bestimmen Zahl zufälliger Bytes füllt. Der Dateiname und die gewünschte Länge sollen über die Kommandozeile beim Aufruf gesetzt werden können.

Aufgabe 4 (5 Punkte)

Erstellen Sie eine eigene Klasse CountedReader als Unterklasse von java.io.FilterReader , die parallel zum Lesen der Eingabezeichen die Anzahl der bisher gelesenen Zeichen und Zeilen speichert. Außerdem sollte es Methoden zum Abfragen der gelesenen Zeichen- bzw. Zeilenzahl geben und eine Methode zum Zurücksetzen der Zähler.

Testen Sie Ihr Programm mit einer kleinen Klasse, die eine Datei in die Standardausgabe kopiert und anschließend die Anzahl der Zeichen und Zeilen ausgibt.

Gesamtpunkte: 20



Elmar Ludwig
6/15/2001