Temporary Directory — définition, fichiers temporaires et gestion du stockage

Auteur : IT Sectr Publié le : 2026-07-10 Temps de lecture : 10 min

Temporary Directory (tmp) est un répertoire dans le sandbox des applications iOS destiné à stocker des données extrêmement temporaires qui ne sont nécessaires que pendant la session en cours de l'application. Selon l'Apple File System Programming Guide (2024), le système peut vider tmp à chaque fin d'application ou redémarrage de l'appareil. Contrairement au Caches Directory, les fichiers temporaires dans tmp ne sont pas destinés à persister entre les lancements — le développeur doit les supprimer explicitement après utilisation pour ne pas gaspiller d'espace disque.

Points clés

  • Temporary Directory — répertoire pour les données nécessaires uniquement dans la session actuelle de l'application.
  • iOS peut vider tmp lors du redémarrage de l'appareil ou de la fin de l'application.
  • Les fichiers dans tmp ne sont pas inclus dans les sauvegardes iCloud et iTunes.
  • Le chemin vers tmp est obtenu via NSTemporaryDirectory() en Swift ou Objective-C.
  • Le développeur doit supprimer manuellement les fichiers de tmp après utilisation.

Qu'est-ce que le Temporary Directory dans iOS ?

Temporary Directory (également appelé tmp) est un répertoire à l'intérieur du sandbox des applications iOS conçu pour stocker des données dont la durée de vie est limitée à la session en cours. C'est le stockage le plus éphémère parmi tous les répertoires du sandbox.

iOS fournit tmp pour les opérations nécessitant un stockage intermédiaire de fichiers : téléchargement d'un fichier avant de le déplacer dans Documents, création d'une copie temporaire avant l'exportation, mise en tampon des données en streaming. Une fois l'opération terminée, les fichiers temporaires doivent être supprimés.

Selon la Documentation Apple Developer (2024), le répertoire tmp est unique car son chemin peut changer entre les lancements de l'application. iOS génère un nouveau chemin tmp à chaque lancement — cela garantit que les données de la session précédente ne soient pas lues accidentellement. Le développeur ne doit jamais enregistrer le chemin tmp entre les lancements.

Important : contrairement au Caches Directory, où les données peuvent survivre à plusieurs lancements, tmp ne garantit pas la persistance des données entre les sessions à long terme. C'est le moyen le plus fiable de stocker des données vraiment temporaires.

Comment obtenir le chemin vers le Temporary Directory

En Swift, pour obtenir le chemin vers tmp, on utilise la fonction globale NSTemporaryDirectory() ou FileManager.temporaryDirectory. Ce sont les API les plus simples parmi tous les répertoires du sandbox.

swift
import Foundation

// Option 1: NSTemporaryDirectory()
let tempDir = NSTemporaryDirectory()
let tempFile = (tempDir as NSString)
    .appendingPathComponent("export_temp.pdf")

// Option 2: FileManager.temporaryDirectory (URL)
let tempURL = FileManager.default.temporaryDirectory
let exportURL = tempURL.appendingPathComponent("export_temp.pdf")

Objective-C utilise la même fonction globale NSTemporaryDirectory(). Le résultat est une chaîne contenant le chemin complet vers le répertoire temporaire de l'application.

objective-c
@import Foundation;

NSString *tempDir = NSTemporaryDirectory();
NSString *tempFile = [tempDir stringByAppendingPathComponent:@"temp_data.bin"];

Une différence clé par rapport aux autres répertoires : NSTemporaryDirectory() ne nécessite pas de spécifier un domaine ou un masque de recherche — c'est une fonction globale. Cependant, le chemin peut changer au prochain lancement, donc ne l'enregistrez jamais dans UserDefaults ou tout autre stockage persistant.

Quelles données stocker dans tmp

Temporary Directory est destinée à un ensemble strictement défini de scénarios. Les développeurs confondent souvent tmp avec Caches, plaçant dans tmp des données qui devraient durer plus d'une session. Voyons les cas d'utilisation corrects.

Fichiers intermédiaires lors de l'exportation

Fichiers créés lors de l'exportation de données : une copie temporaire d'un rapport avant de l'envoyer par e-mail, une archive compressée avant le téléchargement, un fichier intermédiaire de conversion de format. Une fois l'exportation terminée, le fichier doit être supprimé.

Mise en tampon des données en streaming

Tampons temporaires pour l'enregistrement audio, vidéo ou de données en streaming traitées en temps réel. Par exemple, enregistrement vocal avant de le sauvegarder dans un stockage permanent, ou mise en tampon d'un flux vidéo pendant le streaming.

ScénarioRépertoireJustification
Exporter un PDF avant envoitmpFichier inutile après envoi
Mettre en cache des imagesCachesUtile entre les sessions
Télécharger un fichier avant déplacementtmpStockage intermédiaire
Journaux de sessiontmpPertinents uniquement pendant la session
Modifier un documenttmpVersion avant sauvegarde

Si les données ne sont nécessaires qu'ici et maintenant — utilisez tmp. Si elles peuvent être utiles dans la prochaine session — utilisez Caches. Si la perte de données est inacceptable — utilisez Documents.

Cycle de vie des fichiers temporaires

iOS gère le cycle de vie de tmp différemment des autres répertoires du sandbox. Comprendre ce cycle est essentiel pour concevoir correctement le stockage de fichiers dans l'application.

À chaque lancement de l'application, iOS peut allouer un nouveau chemin pour tmp. Le chemin précédent devient inaccessible, bien que les fichiers physiques puissent rester sur le disque jusqu'au redémarrage de l'appareil. C'est pourquoi Apple recommande fortement de ne pas enregistrer le chemin tmp entre les sessions.

Selon la Note Technique Apple TN2150 (2024), le système peut vider tmp dans les cas suivants : redémarrage de l'appareil, limite d'espace disque atteinte, déchargement de l'application (Offload). Contrairement à Caches, tmp n'est pas destiné à stocker des données même entre plusieurs lancements — c'est le stockage le moins fiable du sandbox.

Le développeur doit supprimer explicitement les fichiers temporaires après avoir terminé une opération en utilisant FileManager.removeItem(at:). Les fichiers non supprimés dans tmp s'accumulent et gaspillent de l'espace disque — iOS ne garantit pas leur nettoyage automatique dans un proche avenir.

Temporary Directory vs Caches Directory

Comparer tmp et Caches aide les développeurs à prendre la bonne décision lors du choix d'un répertoire de stockage. Un choix incorrect peut entraîner soit une perte prématurée de données, soit une consommation inutile d'espace.

ParamètreTemporary DirectoryCaches Directory
Durée de vieSession actuelle uniquementEntre sessions (sans garantie)
Changement de cheminPeut changer à chaque lancementChemin stable
Nettoyage automatiqueAu redémarrage, au déchargementEn cas de manque d'espace
Suppression par le développeurObligatoire après opérationRecommandée si dépassement de limite
UtilisationOpérations intermédiairesCache persistant

Une règle pratique : choisissez tmp pour les données qui seront supprimées en quelques secondes ou minutes après leur création. Choisissez Caches pour les données qu'il est utile de conserver pendant des heures ou des jours entre les sessions, mais qui peuvent être régénérées.

Meilleures pratiques pour travailler avec tmp

Travailler avec Temporary Directory nécessite de la discipline : comme les données dans tmp sont éphémères et que leur accumulation peut entraîner un gaspillage d'espace, les développeurs doivent suivre plusieurs pratiques clés.

Supprimez toujours les fichiers après utilisation

FileManager.removeItem(at:) doit être appelé immédiatement après avoir terminé une opération avec un fichier temporaire. Utilisez defer en Swift pour garantir la suppression même en cas d'erreur.

swift
import Foundation

let tempURL = FileManager.default
    .temporaryDirectory
    .appendingPathComponent("upload_temp.dat")

defer {
    try? FileManager.default.removeItem(at: tempURL)
}

// Work with temp file
try "temporary data".write(to: tempURL, atomically: true)
// ... file operation ...
// defer executes when scope exits

N'utilisez pas tmp pour les données à longue durée de vie

Si les données peuvent être nécessaires une heure après leur création — sauvegardez-les dans Caches ou Application Support. tmp est conçu pour des opérations de quelques minutes, pas pour le stockage.

Suivre ces règles garantit que les fichiers temporaires ne s'accumulent pas, que l'espace disque est utilisé efficacement et que l'application gère correctement tous les scénarios de nettoyage du système de fichiers iOS.

Foire aux questions

Le chemin vers le Temporary Directory peut-il changer pendant l'exécution de l'application ?

Généralement, le chemin ne change pas au sein d'une même session, mais iOS ne le garantit pas. Dans de rares cas, le système peut modifier tmp lorsque l'application passe de l'arrière-plan au premier plan. C'est pourquoi Apple recommande d'appeler NSTemporaryDirectory() chaque fois que vous avez besoin du chemin plutôt que de le stocker dans une variable.

Que se passe-t-il si je ne supprime pas les fichiers de tmp ?

Les fichiers s'accumuleront et occuperont de l'espace disque. iOS peut vider tmp au redémarrage de l'appareil, mais jusque-là, l'application gaspillera de l'espace disque. En cas d'accumulation importante, l'utilisateur peut voir dans les paramètres de stockage que l'application occupe beaucoup d'espace.

tmp est-il adapté au chiffrement des données temporaires ?

Oui, vous pouvez utiliser DataProtectionType avec NSFileProtectionComplete pour les fichiers temporaires contenant des données sensibles. Cependant, gardez à l'esprit : si le fichier n'est lu que dans la session actuelle puis supprimé, le chiffrement peut être excessif. Évaluez la nécessité du chiffrement en fonction du type de données.

Comment créer un nom de fichier unique dans tmp sans collisions ?

Utilisez ProcessInfo.processInfo.globallyUniqueString pour générer un identifiant unique, ou UUID().uuidString. FileManager fournit également la méthode urlForCreatingTemporaryFile, qui génère automatiquement un nom unique dans tmp. Cela garantit l'absence de collisions lors des écritures parallèles.

La taille de tmp affecte-t-elle la révision de l'App Store ?

Indirectement — oui. Apple prête attention à la quantité totale de données que l'application stocke sur le disque. Si tmp contient des gigaoctets de fichiers non supprimés, le réviseur peut rejeter l'application. La limite recommandée pour tmp est de ne pas dépasser 100 Mo à tout moment. Nettoyez tmp régulièrement et vérifiez sa taille via FileManager.

Résumé

  • Temporary Directory (tmp) — répertoire pour les données dont la durée de vie est limitée à la session actuelle de l'application.
  • Le chemin vers tmp peut changer entre les lancements — ne l'enregistrez pas dans un stockage persistant.
  • Le système peut vider tmp lors du redémarrage de l'appareil ou du déchargement de l'application.
  • Les fichiers dans tmp ne sont pas inclus dans les sauvegardes iCloud et iTunes.
  • Contrairement au Caches Directory, tmp n'est pas conçu pour le stockage entre les sessions.
  • Le développeur doit supprimer explicitement les fichiers temporaires avec FileManager.removeItem.
  • Utilisez defer en Swift pour garantir la suppression des fichiers temporaires quel que soit le résultat de l'opération.

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi