Arbeiten mit Dateien in Swift: Vom Öffnen bis zur Verschlüsselung

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

Warum Swift nicht nur UI, sondern auch Dateien kann

\n\n

Wenn Entwickler mit Swift beginnen, schreiben sie meistens Apps mit Oberflächen, Animationen und Netzwerkanfragen. Aber früher oder später kommt die Aufgabe: Daten auf dem Gerät speichern, eine Konfiguration lesen, eine JSON-Datei parsen oder einfach ein Dokument kopieren. Und dann sind viele ratlos. Zu Unrecht – die Arbeit mit Dateien in Swift ist so elegant und durchdacht, dass man nach ihr nicht mehr in andere Sprachen zurückkehren möchte.

\n\n

In diesem Artikel behandeln wir die Interaktion mit dem Dateisystem in Swift vom Einfachen zum Komplexen. Sie erfahren, wie Sie Dateien erstellen, lesen, schreiben und löschen, mit Verzeichnissen arbeiten, Fehler behandeln und sogar Daten verschlüsseln. Los geht's!

\n\n

Grundlagen: FileManager und FileHandle

\n\n

Das Herz des Dateisystems in Swift ist die Klasse FileManager. Es ist ein „Verwalter“, der alles über Ordner und Dateien auf dem Gerät weiß. Er ermöglicht es, die Existenz zu prüfen, Objekte zu verschieben, zu kopieren und zu löschen. Für die Arbeit mit Dateiinhalten (Lesen und Schreiben) wird FileHandle oder höherwertige Methoden von Data, String und Codable verwendet.

\n\n

Wo Dateien speichern? Pfade und Verzeichnisse

\n\n

Bevor wir Code schreiben, müssen wir verstehen, wo wir Daten speichern dürfen. In iOS und macOS gibt es strenge Regeln: Eine App kann nur in ihre Sandbox schreiben. Die gängigsten Verzeichnisse sind:

\n\n
    \n
  • Documents – für Benutzerdaten, die bei Backups erhalten bleiben sollen.
  • \n
  • Library/Caches – für temporäre Dateien, die das System löschen kann.
  • \n
  • tmp – für einmalige Dateien, wird beim Neustart gelöscht.
  • \n
\n\n

Den Pfad zum gewünschten Ordner zu erhalten, ist ganz einfach:

\n\n
import Foundation\n\nlet fileManager = FileManager.default\nlet documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first!\nprint("Documents: \\(documentsURL.path)")\n\nlet cachesURL = fileManager.urls(for: .cachesDirectory, in: .userDomainMask).first!\nprint("Caches: \\(cachesURL.path)")
\n\n

Erstellen und Löschen von Dateien in Swift

\n\n

Beginnen wir mit dem Einfachsten – erstellen wir eine leere Datei im Documents-Verzeichnis:

\n\n
let fileURL = documentsURL.appendingPathComponent("myFile.txt")\n\n// Datei erstellen, falls sie nicht existiert\nif !fileManager.fileExists(atPath: fileURL.path) {\n    fileManager.createFile(atPath: fileURL.path, contents: nil, attributes: nil)\n    print("Datei erstellt!")\n}
\n\n

Beachten Sie: createFile(atPath:contents:attributes:) gibt einen Bool zurück, der angibt, ob die Datei erstellt wurde. Überprüfen Sie immer das Ergebnis – das schützt vor unerwarteten Fehlern.

\n\n

Das Löschen einer Datei erfolgt mit einer Zeile:

\n\n
do {\n    try fileManager.removeItem(at: fileURL)\n    print("Datei gelöscht")\n} catch {\n    print("Fehler beim Löschen: \\(error.localizedDescription)")\n}
\n\n

Hier verwenden wir try und einen do-catch-Block – der Standardansatz zur Fehlerbehandlung in Swift. Rufen Sie removeItem niemals ohne Prüfung auf, sonst stürzt die App ab.

\n\n

Lesen und Schreiben von Textdateien

\n\n

Das häufigste Szenario ist die Arbeit mit Textdaten. Swift bietet praktische Methoden zum Lesen einer Datei in Swift und zum Schreiben über Strings:

\n\n
// Text schreiben\nlet text = "Hallo, Welt! Hello, Swift!"\ndo {\n    try text.write(to: fileURL, atomically: true, encoding: .utf8)\n    print("Text geschrieben")\n} catch {\n    print("Fehler beim Schreiben: \\(error)")\n}\n\n// Text lesen\ndo {\n    let savedText = try String(contentsOf: fileURL, encoding: .utf8)\n    print("Gelesen: \\(savedText)")\n} catch {\n    print("Fehler beim Lesen: \\(error)")\n}
\n\n

Das Flag atomically: true stellt sicher, dass der Schreibvorgang atomar ist – die Daten werden zuerst in eine temporäre Datei geschrieben und dann ersetzt. So wird verhindert, dass bei einem Absturz eine beschädigte Datei zurückbleibt.

Blogs

Buchempfehlungen