Weitere Grundlegendende Programmierkonzepte in Java
Dateien lesen und schreiben
import java.io.File; import java.io.PrintWriter;
Danach kann es losgehen.
File datei = new File("datei.txt"); PrintWriter printWriter = new PrintWriter(datei); printWriter.print(text); printWriter.close();
Der PrintWriter legt eine neue Datei an, falls diese noch nicht existiert. Sollte schon eine Datei existieren, so wird sie überschrieben.
Als Nächstes wollen wir den Inhalt unserer Datei wieder einlesen. Hier können wir wieder die Scanner-Klasse verwenden. Dieses Mal übergeben wir aber nicht System.in als Parameter sondern unsere File-Instanz. Das alleine reicht aus um einen Scanner zu erzeugen, der aus einer Datei ließt.
Es ist hierbei wichtig, dass die Datei bereits existiert, da das Programm sonst abstürzt. Dafür verwenden wir die datei.exists() Methode der File Klasse.
String text = ""; File datei = new File("datei.txt"); if (datei.exists()) { Scanner scanner = new Scanner(datei); while (scanner.hasNextLine()) { text += scanner.nextLine() + "\n"; } scanner.close(); }
Mit der Methode scanner.hasNextLine() kann geprüft werden, ob es weitere Zeilen in der Datei gibt. Wenn ja, kann mit der Methode scanner.nextLine() die Zeile gelesen werden.
Mit diesem neuen Wissen können wir nun unser Tagebuch erheblich verbesser:
import java.io.File; import java.io.PrintWriter; import java.util.Scanner; public class Tagebuch { public static void main(String[] args) throws Exception { System.out.println("Wie heißt du?"); Scanner scanner = new Scanner(System.in); String name = scanner.next(); if (name.equals("Jan")) { System.out.println("Hallo " + name + "!"); String text = ""; // Bisherige Einträge laden File datei = new File("tagebuch-" + name + ".txt"); if (datei.exists()) { Scanner scnr = new Scanner(datei); while (scnr.hasNextLine()) { text += scnr.nextLine() + "\n"; } scnr.close(); } System.out.println("Geladener Text: " + text); System.out.println("Bitte Text eingeben. Zum Beenden 'quit' eingeben."); // Schleife zum Einlesen des Textes while (true) { String eingabe = scanner.next(); // "quit" beendet die Schleife if (eingabe.equals("quit")) { break; } text += eingabe; } System.out.println("Eingegeben wurde: " + text); // Neuen Tagebuchinhalt speichern PrintWriter printWriter = new PrintWriter(datei); printWriter.print(text); printWriter.close(); } else { System.out.println("Der Benutzer ist abgelehnt."); } scanner.close(); } }