Java Reference
In-Depth Information
Vor dem allerersten Programmstart existiert noch keine Datei mit Kontaktdaten. Des-
halb wird zunächst ein
File
-Objekt erzeugt; dieses Erzeugen eines Objekts vom Typ
File
bedeutet aber noch nicht, dass diese Datei im Dateisystem (d. h. auf der Festplatte)
damit gleichzeitig erzeugt wird. Mit
datei.exists()
wird geprüft werden, ob die Datei
auf dem Datenträger existiert. Existiert sie nicht, kann sie mit
datei.createNewFile()
angelegt werden.
Existiert bereits eine Kontaktdatendatei, wird eine lokale Variable
adresszeile
vom Typ
String
angelegt, in der bei den anschließenden Lesevorgängen jeweils die gelesene Zeile
zwischengespeichert wird. Analog zum
BufferedWriter
wird hier ein Eingabe-Stream als
BufferedReader
verwendet, dem ebenso analog ein
FileReader
-Objekt mit dem Datei-
namen übergeben wird. Die entsprechenden
import
-Anweisungen müssen Sie ergänzen:
import java.io.File;
import java.io.BufferedReader;
import java.io.FileReader;
12
Da Sie beim Lesen aus einer Datei nicht wissen, wie viele Einträge in der Datei stehen,
können Sie hier keine
for
-Schleife wie beim Schreiben wählen. Es wird daher mit einer
while
-Schleife so lange aus der Datei gelesen, bis
in.readLine()
als Ergebnis
null
liefert.
Dies ist der Fall, sobald das Dateiende erreicht ist. Innerhalb der
while
-Schleife wird mit
jListKontakteModel.addElement(adresszeile);
der in
adresszeile
zwischengespeicherte Eintrag in die Listbox übertragen. Nach Ende
der Schleife wird der
BufferedReader
und damit die Datei wieder mit
in.close();
geschlossen. Die Sicherheitsmechanismen mit
try-catch
entsprechen denen beim
Schreiben in die Datei.
Mit diesen Erweiterungen haben Sie ein vollwertiges Programm zur Verwaltung von
Kontaktdaten. Die Daten werden dauerhaft gespeichert, und Sie können sie jederzeit
erweitern, ändern und löschen.
Mit den Klassen
FilterWriter
und
FilterReader
können Daten beim Schreiben in bzw.
beim Lesen aus Datenströmen gefiltert werden. Ein einfaches Beispiel für die Anwen-
dung eines solchen Filters könnte das verschlüsselte Speichern eines Textes darstellen.
Bei diesem Beispiel geht es nicht darum, eine effektive Verschlüsselung zu verwenden.
Vielmehr soll die Verwendung eines
FilterWriter
bzw. eines
FilterReader
demons-
triert werden. Deshalb wird ganz bewusst ein primitives Verschlüsselungsverfahren
verwendet, das mit sehr wenig Quellcode auskommt.