Travailler avec le système de fichiers en Swift : guide complet

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction au travail avec le système de fichiers en Swift



Le développement pour iOS et macOS nécessite souvent une interaction avec le système de fichiers de l'appareil. Que ce soit pour sauvegarder des données utilisateur, mettre en cache des images ou exporter des documents — savoir travailler avec des fichiers et dossiers est une compétence essentielle pour tout développeur Swift. Dans cet article, nous allons détailler comment utiliser FileManager, URL et Data pour effectuer toutes les opérations de base avec le système de fichiers.



Nous aborderons la création, la lecture, l'écriture et la suppression de fichiers, ainsi que la navigation dans les répertoires. Tous les exemples de code sont écrits en Swift 5 et conviennent aussi bien pour les projets iOS que macOS.



Composants principaux : FileManager et URL



En Swift, la classe centrale pour travailler avec le système de fichiers est FileManager. Elle fournit des méthodes pour gérer les fichiers, les répertoires et leurs attributs. Pour spécifier les chemins, on utilise la structure URL, qui est une alternative plus sûre et moderne aux chaînes de caractères.



Obtention des répertoires standards



La première chose à savoir est comment obtenir les chemins vers les répertoires système standards. Pour iOS, ce sont généralement Documents, Library/Caches et tmp.



import Foundation

let fileManager = FileManager.default

// Répertoire Documentsguard let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else { fatalError("Impossible d'obtenir le répertoire Documents")}print("Documents: \\(documentsURL.path)")

// Répertoire Cachesguard let cachesURL = fileManager.urls(for: .cachesDirectory, in: .userDomainMask).first else { fatalError("Impossible d'obtenir le répertoire Caches")}print("Caches: \\(cachesURL.path)")

// Répertoire temporairelet tempURL = fileManager.temporaryDirectoryprint("Temp: \\(tempURL.path)")


Création et écriture de fichiers



La création d'un fichier en Swift est une combinaison de création de chemin et d'écriture de données. Examinons deux approches principales.



Écriture de données textuelles



func createTextFile() {    guard let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else { return }        let fileURL = documentsURL.appendingPathComponent("example.txt")    let content = "Bonjour le monde ! Ceci est un fichier de test."        do {        try content.write(to: fileURL, atomically: true, encoding: .utf8)        print("Fichier créé avec succès au chemin : \\(fileURL.path)")    } catch {        print("Erreur d'écriture du fichier : \\(error.localizedDescription)")    }}


Écriture de données binaires (images, archives)



func createBinaryFile() {    guard let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else { return }        let fileURL = documentsURL.appendingPathComponent("data.bin")    let data = Data([0x48, 0x65, 0x6C, 0x6C, 0x6F]) // "Hello" en hex        do {        try data.write(to: fileURL, options: .atomic)        print("Fichier binaire créé")    } catch {        print("Erreur : \\(error)")    }}


Création de répertoires



func createDirectory() {    guard let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else { return }        let newDirURL = documentsURL.appendingPathComponent("MyFolder")        do {        try fileManager.createDirectory(at: newDirURL, withIntermediateDirectories: true, attributes: nil)        print("Répertoire créé : \\(newDirURL.path)")    } catch {        print("Erreur de création du répertoire : \\(error)")    }}


Lecture et vérification des fichiers



Une fois les fichiers créés, il faut savoir les lire et vérifier leur existence.



Vérification de l'existence d'un fichier



func fileExists(at url: URL) -> Bool {    return fileMan                

Blogs

Book Recommendations