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

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

\n

Travailler avec le système de fichiers est l'une des tâches clés lors du développement d'applications pour iOS et macOS. Que vous écriviez une application pour sauvegarder des données utilisateur, mettre en cache des images ou exporter des documents, comprendre les bases de la gestion des fichiers en Swift est une compétence essentielle. Dans cet article, nous allons explorer des exemples pratiques de travail avec le système de fichiers : création, lecture, écriture, suppression de fichiers et gestion des répertoires.

\n

Apple fournit une API puissante FileManager qui permet d'interagir avec le système de fichiers à la fois sur iOS et macOS. Nous allons l'examiner à travers des exemples concrets avec du code prêt à l'emploi.

\n\n

1. Obtention des chemins des répertoires système

\n

Avant de commencer à travailler avec les fichiers, il est nécessaire d'accéder aux bons répertoires. Sous iOS et macOS, chaque application fonctionne dans un bac à sable (sandbox) isolé. Pour stocker des données, utilisez les chemins suivants :

\n\n

Répertoire Documents

\n

Utilisé pour stocker les données utilisateur qui doivent être conservées lors des mises à jour de l'application et des sauvegardes.

\n
import Foundation\n\nfunc getDocumentsDirectory() -> URL {\n    let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)\n    return paths[0]\n}\n\n// Exemple d'utilisation\nlet documentsURL = getDocumentsDirectory()\nprint("Chemin Documents : \\(documentsURL.path)")
\n\n

Répertoire Caches

\n

Pour les fichiers temporaires qui peuvent être recréés (par exemple, le cache d'images).

\n
func getCachesDirectory() -> URL {\n    let paths = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask)\n    return paths[0]\n}
\n\n

Répertoire Library/Application Support

\n

Pour stocker des données qui ne doivent pas être directement accessibles à l'utilisateur, mais qui doivent être conservées.

\n
func getApplicationSupportDirectory() -> URL {\n    let paths = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask)\n    let directory = paths[0]\n    // Assurons-nous que le répertoire existe\n    try? FileManager.default.createDirectory(at: directory, withIntermediateDirectories: true)\n    return directory\n}
\n\n

2. Création et écriture de fichiers

\n

Maintenant que nous savons où stocker les fichiers, apprenons à les créer et à y écrire des données.

\n\n

Écriture de données textuelles

\n

La méthode la plus simple consiste à utiliser la méthode write(to:) d'une chaîne de caractères ou de Data.

\n
func writeTextFile() {\n    let fileName = "example.txt"\n    let documentsURL = getDocumentsDirectory()\n    let fileURL = documentsURL.appendingPathComponent(fileName)\n    \n    let content = "Bonjour, Swift ! Ceci est un fichier de test."\n    \n    do {\n        try content.write(to: fileURL, atomically: true, encoding: .utf8)\n        print("Fichier créé avec succès : \\(fileURL.path)")\n    } catch {\n        print("Erreur d'écriture du fichier : \\(error.localizedDescription)")\n    }\n}
\n\n

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

\n

Pour travailler avec des données binaires, utilisons Data.

\n
func writeJSONFile() {\n    let fileName = "data.json"\n    let documentsURL = getDocumentsDirectory()\n    let fileURL = documentsURL.appendingPathComponent(fileName)\n    \n    let dictionary: [String: Any] = [\n        "name": "Développeur Swift",\n        "age": 30,\n        "skills": ["iOS", "macOS", "SwiftUI"]\n    ]\n    \n    do {\n        let jsonData = try JSONSerialization.data(withJSONObject: dictionary, options: .prettyPrinted)\n        try jsonData.write(to: fileURL, options: .atomic)\n        print("Fichier JSON sauvegardé")\n    } catch {\n        print("Erreur : \\(error)")\n    }\n}
\n\n

Création de répertoires

\n

Parfois, il est nécessaire de créer des dossiers imbriqués pour organiser les fichiers.

\n
func createSubdirectories() {\n    let documentsURL = getDocumentsDirectory()\n    let subDirURL = documentsURL.appendingPathCo                

Blogs

Book Recommendations