Travailler avec le système de fichiers en Swift : bases pour débutants

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

Travailler avec le système de fichiers en Swift : pour débutants



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. Qu'il s'agisse de sauvegarder des données utilisateur, de mettre en cache des images ou d'exporter des documents, vous devrez inévitablement interagir avec des fichiers et des dossiers. Dans cet article, nous allons passer en revue les principaux outils Swift pour travailler avec le système de fichiers, y compris FileManager, les chemins de répertoires, la création, la lecture, l'écriture et la suppression de fichiers. Le contenu est destiné aux développeurs débutants, donc tous les exemples seront aussi simples et clairs que possible.



Les bases : FileManager et les chemins



La classe principale pour travailler avec le système de fichiers en Swift est FileManager. C'est une enveloppe autour des appels système standard qui fournit une interface pratique pour gérer les fichiers et les dossiers. Le plus souvent, on utilise son singleton :



let fileManager = FileManager.default


Comme les applications sous iOS et macOS fonctionnent dans un environnement isolé (sandbox), vous devez savoir où vous pouvez enregistrer des données. Les principaux répertoires auxquels l'application a accès sont :



  • Documents — pour les documents et données utilisateur qui doivent être conservés entre les lancements.
  • Caches — pour les fichiers temporaires que le système peut supprimer pour libérer de l'espace.
  • Temporary — pour les fichiers temporaires qui seront garantis supprimés au prochain redémarrage de l'appareil.
  • Library/Application Support — pour les données qui ne doivent pas être directement accessibles à l'utilisateur, mais qui doivent être conservées.


Vous pouvez obtenir le chemin vers un répertoire souhaité à l'aide de la méthode urls(for:in:) :



// Obtenir le chemin vers le dossier Documentslet documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first!print("Chemin Documents : \\(documentsURL.path)")

// Obtenir le chemin vers le dossier Cacheslet cachesURL = fileManager.urls(for: .cachesDirectory, in: .userDomainMask).first!print("Chemin Caches : \\(cachesURL.path)")

// Obtenir le chemin vers le dossier temporairelet tempURL = fileManager.temporaryDirectoryprint("Chemin Temp : \\(tempURL.path)")


Notez que la méthode retourne un tableau de URL (au cas où plusieurs chemins existeraient), mais pour les répertoires utilisateur, on prend généralement le premier élément. En Swift moderne, il est recommandé d'utiliser URL plutôt que des chemins sous forme de chaînes, car c'est plus sûr et plus pratique.



Création et écriture de fichiers



Maintenant que nous savons où enregistrer des fichiers, apprenons à les créer et à y écrire des données. Pour écrire des données textuelles, le plus simple est d'utiliser la méthode write(to:atomically:encoding:) de la classe String :



// Créer le chemin vers le fichier dans le dossier Documentslet fileURL = documentsURL.appendingPathComponent("myFile.txt")

// Texte à écrirelet content = "Bonjour le monde ! C'est mon premier fichier en Swift."

do { // Écrire la chaîne dans le fichier try content.write(to: fileURL, atomically: true, encoding: .utf8) print("Fichier créé avec succès : \\(fileURL.path)")} catch { print("Erreur d'écriture du fichier : \\(error.localizedDescription)")}


Le paramètre atomically: true signifie que les données seront d'abord écrites dans un fichier temporaire, puis renommées vers le fichier cible. Cela protège contre la corruption du fichier en cas de panne. Pour les données binaires (par exemple, des images), vous pouvez utiliser Data :



// Créer des données binaires (par exemple, un tableau d'octets)let data = Data([0x48, 0x65, 0x6C, 0x6C, 0x6F]) // "Hello" en ASCII

let binaryFileURL = documentsURL.appendingPathComponent("data.bin")

do { try data.write(to: binaryFileURL, options: .atomic) print("Fichier binaire créé")} catch { print("Erreur : \\(error)")}


Lecture de fichiers et p

Blogs

Book Recommendations