Part 11

Dateien lesen/schreiben

Wir haben bereits einige Strategien zum Lesen von Textdateien gelernt. Wenn Ihre Erinnerungen an das Thema verblasst sind, werfen Sie einen Blick auf die entsprechenden Abschnitte von Teil 4 des Kursmaterials.

Als Nächstes schauen wir uns das Schreiben von Daten in Dateien an. Die Klasse PrintWriter bietet die Funktionalität, in Dateien zu schreiben. Der Konstruktor der PrintWriter-Klasse erhält als Parameter einen String, der den Speicherort der Zieldatei darstellt.

PrintWriter writer = new PrintWriter("file.txt");
writer.println("Hello file!"); // schreibt den String "Hello file!" und einen Zeilenumbruch in die Datei
writer.println("More text");
writer.print("And a little extra"); // schreibt den String "And a little extra" in die Datei ohne einen Zeilenumbruch
writer.close(); // schließt die Datei und stellt sicher, dass der geschriebene Text in die Datei gespeichert wird

Im obigen Beispiel schreiben wir den String "Hello file!" in die Datei "file.txt", gefolgt von einem Zeilenumbruch und weiterem Text. Beachten Sie, dass die Methode print beim Schreiben in die Datei keine Zeilenumbrüche hinzufügt; diese müssen Sie selbst hinzufügen. Im Gegensatz dazu fügt die Methode println am Ende des übergebenen Strings einen neuen Zeilenumbruch hinzu.

Der Konstruktor der PrintWriter-Klasse kann eine Ausnahme werfen, die entweder behandelt oder weitergegeben werden muss, sodass die aufrufende Methode die Verantwortung übernimmt. So könnte eine Methode aussehen, die als Parameter einen Dateinamen und den zu schreibenden Textinhalt erhält:

public class Storer {

    public void writeToFile(String fileName, String text) throws Exception {
        PrintWriter writer = new PrintWriter(fileName);
        writer.println(text);
        writer.close();
    }
}

In der obigen Methode writeToFile beginnen wir mit der Erstellung eines PrintWriter-Objekts, das Daten in die Datei schreibt, die sich an dem durch den String fileName angegebenen Pfad befindet. Danach schreiben wir den Text mit der Methode println in die Datei. Die mögliche Ausnahme, die der Konstruktor wirft, muss mit einem try-catch-Block behandelt oder die Verantwortung für die Ausnahmebehandlung an eine andere Stelle übertragen werden. In der Methode writeToFile wird die Verantwortung für die Ausnahmebehandlung an die Methode weitergegeben, die writeToFile aufruft.

Erstellen wir eine main-Methode, die die writeToFile-Methode eines Storer-Objekts aufruft. Es gibt nichts, was die main-Methode zwingt, die Ausnahme zu behandeln - sie kann ebenfalls angeben, dass sie eine Ausnahme werfen könnte, indem sie throws Exception zur Methodendefinition hinzufügt.

public static void main(String[] args) throws Exception {
    Storer storer = new Storer();
    storer.writeToFile("diary.txt", "Dear diary, today was a good day.");
}

Durch den Aufruf der obigen Methode wird eine Datei namens "diary.txt" erstellt und der Text "Dear diary, today was a good day." hineingeschrieben. Wenn die Datei bereits existiert, wird der frühere Inhalt gelöscht, wenn wir den neuen Text speichern.

Es ist auch möglich, Dateien so zu bearbeiten, dass der neue Text nach dem bestehenden Inhalt hinzugefügt wird. In diesem Fall möchten Sie möglicherweise die Klasse FileWriter verwenden.

Loading
Sie haben das Ende dieses Abschnitts erreicht! Weiter zum nächsten Abschnitt: