Arbeiten mit dem Dateisystem in Swift: für Anfänger
Das Arbeiten mit dem Dateisystem ist eine der zentralen Aufgaben bei der Entwicklung von Apps für iOS und macOS. Ob es um das Speichern von Benutzerdaten, das Zwischenspeichern von Bildern oder den Export von Dokumenten geht – Sie werden unweigerlich mit Dateien und Ordnern interagieren müssen. In diesem Artikel behandeln wir die grundlegenden Swift-Werkzeuge für die Arbeit mit dem Dateisystem, einschließlich FileManager, Verzeichnispfade, Erstellen, Lesen, Schreiben und Löschen von Dateien. Das Material richtet sich an Anfänger, daher sind alle Beispiele so einfach und verständlich wie möglich gehalten.
Grundlagen: FileManager und Pfade
Die Hauptklasse für die Arbeit mit dem Dateisystem in Swift ist FileManager. Es handelt sich um einen Wrapper für die standardmäßigen Systemaufrufe, der eine benutzerfreundliche Schnittstelle zur Verwaltung von Dateien und Ordnern bietet. Am häufigsten wird sein Singleton verwendet:
let fileManager = FileManager.defaultDa Apps in iOS und macOS in einer isolierten Umgebung (Sandbox) arbeiten, müssen Sie wissen, wo Sie Daten speichern können. Die wichtigsten Verzeichnisse, auf die die App Zugriff hat, sind:
- Documents – für Benutzerdokumente und Daten, die zwischen Starts erhalten bleiben sollen.
- Caches – für temporäre Dateien, die das System zur Freigabe von Speicherplatz löschen kann.
- Temporary – für temporäre Dateien, die beim nächsten Neustart des Geräts garantiert gelöscht werden.
- Library/Application Support – für Daten, die nicht direkt für den Benutzer zugänglich sein sollen, aber erhalten bleiben müssen.
Den Pfad zu einem gewünschten Verzeichnis erhalten Sie mit der Methode urls(for:in:):
// Pfad zum Documents-Ordner abrufenlet documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first!print("Documents path: \\(documentsURL.path)")
// Pfad zum Caches-Ordner abrufenlet cachesURL = fileManager.urls(for: .cachesDirectory, in: .userDomainMask).first!print("Caches path: \\(cachesURL.path)")
// Pfad zum temporären Ordner abrufenlet tempURL = fileManager.temporaryDirectoryprint("Temp path: \\(tempURL.path)")Beachten Sie: Die Methode gibt ein Array von URL zurück (für den Fall, dass mehrere Pfade existieren), aber für Benutzerverzeichnisse wird in der Regel das erste Element verwendet. Im modernen Swift wird die Verwendung von URL anstelle von Zeichenkettenpfaden empfohlen, da dies sicherer und bequemer ist.
Erstellen und Schreiben von Dateien
Nachdem wir nun wissen, wo wir Dateien speichern können, lernen wir, wie man sie erstellt und Daten hineinschreibt. Zum Schreiben von Textdaten ist die Methode write(to:atomically:encoding:) der Klasse String am einfachsten:
// Pfad zur Datei im Documents-Ordner erstellenlet fileURL = documentsURL.appendingPathComponent("myFile.txt")
// Text zum Schreibenlet content = "Hallo, Welt! Das ist meine erste Datei in Swift."
do { // Zeichenkette in die Datei schreiben try content.write(to: fileURL, atomically: true, encoding: .utf8) print("Datei erfolgreich erstellt: \\(fileURL.path)")} catch { print("Fehler beim Schreiben der Datei: \\(error.localizedDescription)")}Der Parameter atomically: true bedeutet, dass die Daten zuerst in eine temporäre Datei geschrieben und dann in die Zieldatei umbenannt werden. Dies schützt vor Dateibeschädigung bei einem Absturz. Für Binärdaten (z. B. Bilder) können Sie Data verwenden:
// Binärdaten erstellen (z. B. ein Byte-Array)let data = Data([0x48, 0x65, 0x6C, 0x6C, 0x6F]) // "Hello" in ASCII
let binaryFileURL = documentsURL.appendingPathComponent("data.bin")
do { try data.write(to: binaryFileURL, options: .atomic) print("Binärdatei erstellt")} catch { print("Fehler: \\(error)")}