💎 Lehrpfad 4: Enterprise Architekturen

Java 13: Modernes Dateihandling (NIO.2) & JSON

Lerne modernen I/O-Zugriff mit Java NIO.2 (Path, Files), ressourcensicheres Lesen/Schreiben und Serialisierung von Objekten in JSON.

📂 Dateien dieser Lerneinheit:
📄 Aufgabe.java (Startercode) 🧪 TestAufgabe.java (Tests) 💡 Musterloesung.java (Lösung) 📖 README.md

💡 1. NIO.2 Dateiverarbeitung

Das moderne Java NIO.2 (`java.nio.file`) ersetzt die alte `File`-Klasse durch performante statische Hilfsmethoden:

Path dateipfad = Path.of("daten", "konfiguration.json");

// 1. Prüfen und Ordner erstellen:
if (!Files.exists(dateipfad.getParent())) {
    Files.createDirectories(dateipfad.getParent());
}

// 2. Schreiben (UTF-8 atomic):
String jsonContent = "{\"version\": 2, \"active\": true}";
Files.writeString(dateipfad, jsonContent, StandardCharsets.UTF_8);

// 3. Lesen als String:
String gelesen = Files.readString(dateipfad, StandardCharsets.UTF_8);
System.out.println("Gelesene Daten: " + gelesen);
🗄️ Didaktische Analogie: Das Aktenarchiv

RAM ist der Schreibtisch: Beim Feierabend wird er komplett abgeräumt. Das Dateisystem ist der feuerfeste Aktenschrank im Keller, der Daten über Neustarts hinweg bewahrt.

⚡ 2. Quick-Cheat-Sheet

MethodeAufgabeVorteil
Files.readString(path)Liest gesamte Datei in StringKompakter Einzeiler ab Java 11
Files.writeString(path, text)Schreibt String in DateiAutomatische Ressourcenschließung
Files.lines(path)Liefert Stream von ZeilenSpeicherschonend für Gigabyte-Dateien
Path.of("a", "b")Erzeugt plattformunabhängigen PfadErsetzt fehleranfälliges String-Slashing

⚠️ 3. Häufige Stolperfallen (Gotchas & Anti-Patterns)

⚠️ Plattformabhängiges Encoding vergessen

Vergisst man StandardCharsets.UTF_8, nutzt die alte Runtime das Betriebssystem-Encoding (unter Windows oft Windows-1252), was zu Umlaut-Salat führt!

⚠️ Offene File-Handles

Wer FileInputStream ohne Try-with-Resources nutzt, blockiert Dateien im Betriebssystem gegen Löschen und Verschieben.

🧠 4. Diagnostischer Selbst-Check

Überprüfe dein Verständnis von Sprach-Features, Speicherverwaltung und Enterprise-Architektur, bevor du den Code in der Web-IDE schreibst.

🎯 5. Aufgaben & Checkliste in Aufgabe.java

💻 In Web-IDE öffnen & lösen →