Arbeiten mit dem Dateisystem in Kotlin: in der Praxis

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung



Die Arbeit mit dem Dateisystem ist eine grundlegende Aufgabe in jeder Programmiersprache. In Kotlin werden Datei- und Verzeichnisoperationen dank seiner prägnanten Syntax und den leistungsstarken Erweiterungen der Java-Standardbibliothek einfach und intuitiv.



In diesem Artikel werden wir praktisch die grundlegenden Operationen durchgehen: Erstellen, Lesen, Schreiben, Kopieren, Verschieben und Löschen von Dateien und Ordnern. Alle Beispiele sind in Kotlin geschrieben und können in Ihren Projekten verwendet werden. Das Material ist sowohl für Anfänger als auch für erfahrene Entwickler nützlich, die ihr Wissen auffrischen oder optimale Lösungen für alltägliche Aufgaben finden möchten.



Wichtige Klassen und Importe



Für die Arbeit mit dem Dateisystem in Kotlin werden Klassen aus den Paketen java.io (z. B. File) und java.nio.file (z. B. Path, Files) verwendet. Moderne Empfehlungen bevorzugen java.nio.file, da diese API leistungsfähiger und benutzerfreundlicher ist.



Für alle Beispiele benötigen wir die folgenden Importe:



import java.io.Fileimport java.nio.file.Pathimport java.nio.file.Pathsimport java.nio.file.Filesimport java.nio.file.StandardCopyOptionimport java.nio.file.StandardOpenOption


Erstellen einer Datei und eines Verzeichnisses



Beginnen wir mit dem Einfachsten – dem Erstellen einer neuen Datei und eines neuen Ordners.



// Verzeichnis erstellenval dir = File("my_directory")if (!dir.exists()) {    dir.mkdirs() // mkdirs() erstellt alle fehlenden übergeordneten Verzeichnisse    println("Verzeichnis erstellt: ${dir.absolutePath}")}

// Datei erstellenval file = File(dir, "example.txt")if (!file.exists()) { file.createNewFile() println("Datei erstellt: ${file.absolutePath}")}


Beachten Sie: mkdirs() erstellt die gesamte Verzeichniskette, falls sie nicht existiert. mkdir() erstellt nur das letzte Verzeichnis und gibt false zurück, wenn der übergeordnete Ordner fehlt.



Lesen und Schreiben von Dateien



Dies sind die häufigsten Operationen. Kotlin bietet mehrere elegante Möglichkeiten für die Arbeit mit Dateiinhalten.



In eine Datei schreiben



val path = Paths.get("my_directory/write_example.txt")

// Zeichenkette zum Schreibenval content = "Hallo, Welt! Diese Zeile wurde in die Datei geschrieben.Zweite Zeile."

// Einfaches Schreiben einer Zeichenkette (überschreibt die Datei)Files.writeString(path, content)

// Schreiben einer Liste von Zeilenval lines = listOf("Zeile 1", "Zeile 2", "Zeile 3")Files.write(path, lines)

// Anhängen an das Dateiendeval additionalContent = "Zusätzliche Zeile."Files.writeString(path, additionalContent, StandardOpenOption.APPEND)


Die Methode Files.writeString() wurde in Java 11 eingeführt und ist in Kotlin/JVM verfügbar. Wenn Sie Unterstützung für ältere Versionen benötigen, verwenden Sie Files.write() mit Angabe der Zeichenkodierung.



Aus einer Datei lesen



val path = Paths.get("my_directory/write_example.txt")

// Gesamten Inhalt als Zeichenkette lesenval fullContent = Files.readString(path)println("Dateiinhalt:$fullContent")

// In eine Liste von Zeilen lesenval allLines: List<String> = Files.readAllLines(path)allLines.forEachIndexed { index, line -> println("Zeile ${index + 1}: $line")}

// Lesen mit Stream (für große Dateien)Files.lines(path).use { stream -> stream.forEach { line -> println("Verarbeite Zeile: $line") }}


Die Konstruktion .use { ... } garantiert das Schließen des Streams nach der Verarbeitung, was besonders bei großen Dateien wichtig ist.



Kopieren, Verschieben und Umbenennen



Diese Operationen werden ebenfalls über java.nio.file.Files realisiert.



Datei kopieren



val source = Paths.get("my_directory/example.txt")val destination = Paths.get("my_directory/backup/example_copy.txt")

Blogs

Buchempfehlungen