224 votes

Création de fichiers temporaires dans Android

Quelle est la meilleure façon de créer un fichier temporaire dans Android?

File.createTempFile peut- il être utilisé? La documentation est très vague à ce sujet.

En particulier, la suppression des fichiers temporaires créés avec File.createTempFile n'est jamais claire.

316voto

sparkymat Points 4619

C'est ce que je fais généralement:

 File outputDir = context.getCacheDir(); // context being the Activity pointer
File outputFile = File.createTempFile("prefix", "extension", outputDir);
 

Quant à leur suppression, je ne suis pas sûr non plus. Comme je l'utilise dans l'implémentation d'un cache, je supprime manuellement les fichiers les plus anciens jusqu'à ce que la taille du répertoire de cache atteigne ma valeur prédéfinie.

94voto

mibollma Points 5389

Les meilleures pratiques à l'interne et à l' externe les fichiers temporaires:

Mémoire Cache Interne

Si vous souhaitez mettre en cache certaines données, plutôt que de le stocker de manière persistante, vous devez utiliser getCacheDir() d'ouvrir un Fichier qui représente le répertoire interne dans lequel votre application doit enregistrer temporaire des fichiers de cache.

Lorsque l'appareil est faible sur l'espace de stockage interne, Android pouvez supprimer ces fichiers de cache pour récupérer de l'espace. Cependant, vous ne devez pas compter sur le système pour nettoyer ces fichiers pour vous. Vous devez toujours conserver les fichiers de cache de vous-même et de rester dans une limite raisonnable de l'espace consommé, tels que 1 MO. Lorsque l'utilisateur désinstalle votre application, ces fichiers sont supprimés.

Mémoire Cache Externe

Pour ouvrir un Fichier qui représente le stockage externe répertoire dans lequel vous devez enregistrer les fichiers de cache, appelez - getExternalCacheDir(). Si l'utilisateur désinstalle votre application, ces fichiers seront automatiquement supprimés.

Semblable à l' ContextCompat.getExternalFilesDirs(), mentionné ci-dessus, vous pouvez également accéder à un répertoire de cache secondaire externe de stockage (si disponible) en appelant ContextCompat.getExternalCacheDirs().

Conseil: Pour préserver l'espace de fichier et de maintenir les performances de votre application, il est important-vous de bien gérer vos fichiers de cache et de supprimer ces qui ne sont plus nécessaires tout au long de votre app du cycle de vie.

40voto

AdrenalineJunky Points 136

Pour temporaire de fichiers internes qui leur sont 2 options

1.

File file; 
file = File.createTempFile(filename, null, this.getCacheDir());

2.

File file
file = new File(this.getCacheDir(), filename);

Les deux options ajoute des fichiers dans les applications du répertoire de cache et peut donc être dégagé pour laisser de l'espace requis, mais l'option 1 s'ajouter un nombre aléatoire à la fin du nom de fichier pour conserver les fichiers unique. Il va également ajouter une extension de fichier qui est .tmp par défaut mais il peut être réglé à quoi que ce soit via l'utilisation de la 2ème paramètre. L'utilisation de nombres aléatoires signifie en dépit de spécifier un nom de fichier, il ne reste pas le même que le numéro est ajouté avec le suffixe/extension de fichier (.tmp par défaut) e.g vous spécifiez le nom de fichier comme internal_file et sort internal_file1456345.tmp . Alors que vous pouvez spécifier l'extension que vous ne pouvez pas spécifier le nombre qui est ajouté. Cependant, vous pouvez trouver le nom de fichier qu'il génère par fichier.getName(); mais vous auriez besoin de le stocker quelque part afin que vous pouvez l'utiliser chaque fois que vous vouliez par exemple de supprimer ou de lire le fichier. C'est pour cette raison, je préfère la 2ème option que le nom de fichier que vous spécifiez est le nom de fichier qui est créé.

15voto

Macarse Points 36519

Vous pouvez utiliser le répertoire cache en utilisant context.getCacheDir () .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X