Ein- und Ausgabe mit Dateien

Werbung
Ein- und Ausgabe mit Dateien
Daten kann man, statt als Parameter oder über die Konsole, auch aus Dateien einlesen und in
Dateien abspeichern. Dateien sind durch einen Dateinamen und den Pfad, unter dem sie auf
dem Computer zu finden sind, gekennzeichnet.
Verwenden Sie die die Klasse FileDialog für die Übergabe von Dateinamen und –pfad
(siehe Handbuch http://www.dpunkt.de/java/Referenz/Das_Paket_java.awt/50.html ).
“Die Klasse FileDialog implementiert einen Dialog, mit dem Dateien ausgewählt werden
können. Der FileDialog kennt zwei Modi: LOAD, um Dateien zum Laden zu selektieren, und
SAVE, um Dateien zu speichern. Es kann ein Filter für die anzuzeigenden Dateinamen gesetzt
werden, so dass nur die Dateien angezeigt werden, deren Name auf den Filter passt. Der
FileDialog ist grundsätzlich modal.”
Beispiel (Ausschnitt):
FileDialog dialog = new FileDialog(new Frame(), "Datei
öffnen", FileDialog.LOAD);
dialog.setVisible(true);
if (dialog.getFile() == null) return;
datei = new File(dialog.getDirectory(),dialog.getFile());
Hier wird zuerst die Variable “dialog” deklariert, dann der Dialog angezeigt. Es wird
abgefragt, ob der Nutzer wirklich eine Datei ausgewählt hat, falls er “Abbrechen” geklickt
hat, wird hier auch die Methode verlassen. Schließlich wird die Dateivariable entsprechend
der ermittelten Parameter deklariert. Niun kann auf die Datei zugegriffen werden.
Hier folgt das Beispiel aus der Übung zur Konsoleneingabe (einAus()), aber nun werden die
über die Konsole eingegebenen Namen nicht auf die Konsole, sondern in eine Datei
ausgegeben).
public void inDateiSchreiben()
{
File datei;
FileDialog dialog = new FileDialog(new Frame(), "Datei speichern",
FileDialog.SAVE);
dialog.setVisible(true);
if (dialog.getFile() == null) return;
datei = new File(dialog.getDirectory(),dialog.getFile());
String eingabe;
try
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter ausgabe = new BufferedWriter(new FileWriter(datei));
System.out.println("Es sollen Namen eingegeben werden. Zum Beenden bitte
ende eingeben.");
eingabe = in.readLine();
while (eingabe.compareTo("ende") != 0)
{
ausgabe.write(eingabe);
//Inhalt in Datei ausgeben
ausgabe.newLine();
//Enter ausgeben
System.out.println("Bitte Namen eingeben:");
eingabe = in.readLine();
}
ausgabe.close();
//Datei schließen
}
catch (Exception e)
{
e.printStackTrace();
}
}
Folgende Bibliotheken sind erforderlich:
import java.io.*;
import java.awt.*;
Das Einlesen der Daten aus einer Datei erfolgt ebenso, nur muss beim Aufruf des FileDialogs
beachtet werden, dass die Option “LOAD” anstelle von “SAVE” angegeben wird.
FileDialog dialog = new FileDialog(new Frame(), "Datei öffnen",
FileDialog.LOAD);
Aufgabe 1
Erstellen Sie eine Methode public void ausDateiLesen() , die den Inhalt der
soeben erstellten Datei einliest und nummeriert auf der Konsole ausgibt. Die Dateivariable
wird mit einer Instanz von FileReader erstellt:
BufferedReader ein = new BufferedReader(new FileReader(datei));
Mit folgendem Test können Sie abfragen, ob die Datei weitere Daten zum Lesen bereithält:
while (ein.ready() == true)
Zusatzaufgabe
Schreiben Sie ein Programm, mit dem eine Datei kopiert werden kann. Geben Sie am Ende
des Kopierprozesses eine Fertig-Meldung auf der Konsole aus, die angibt, welche Quelldatei
(Name) in welche Zieldatei (Name) kopiert wurde.
Herunterladen