Création de fichiers temporaires sur Android
Quelle est la meilleure façon de créer un fichier temporaire sous Android?
Peut "151940920 De Fichier".utiliser createTempFile ? La documentation est très vague à ce sujet.
En particulier, il n'est pas clair quand les fichiers temporaires créés avec File.createTempFile
sont supprimés, si jamais.
5 réponses
C'est ce que je fais habituellement:
File outputDir = context.getCacheDir(); // context being the Activity pointer
File outputFile = File.createTempFile("prefix", "extension", outputDir);
quant à leur suppression, Je ne suis pas tout à fait sûr non plus. Depuis que je l'utilise dans mon implémentation d'un cache, j'efface manuellement les fichiers les plus anciens jusqu'à ce que la taille du répertoire cache descende à ma valeur prédéfinie.
Meilleures pratiques interne et externe fichiers temporaires:
si vous souhaitez mettre en cache certaines données, plutôt que de les stocker de manière persistante, vous devez utiliser
getCacheDir()
pour ouvrir un Fichier qui représente le répertoire interne où votre application devrait enregistrer le cache temporaire fichier.Lorsque l'appareil est faible sur l'espace de stockage interne, Android peut supprimer ces fichiers de cache pour récupérer de l'espace. Cependant, vous ne devez pas compter sur le système de nettoyer ces fichiers pour vous. Vous devez toujours maintenir le cache s'enregistre vous-même et reste dans une limite raisonnable d'espace consommés, tels que 1 MO. Lorsque l'utilisateur désinstalle votre demande, ces fichiers sont supprimés.
pour ouvrir un fichier qui représente le répertoire de stockage externe où vous devez enregistrer les fichiers cache, appelez
getExternalCacheDir()
. Si l'utilisateur désinstalle votre application, ces fichiers seront automatiquement supprimer.similaire à
ContextCompat.getExternalFilesDirs()
, mentionné ci-dessus, vous pouvez également accéder à un répertoire de cache secondaire externe de stockage (si disponible), en appelantContextCompat.getExternalCacheDirs()
.astuce: pour préserver l'espace des fichiers et maintenir les performances de votre application, il est il est important que vous gériez soigneusement vos fichiers de cache et que vous les supprimiez. qui ne sont plus nécessaires tout au long du cycle de vie de votre application.
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 ajoutent des fichiers dans le répertoire de cache des applications et peuvent donc être effacées pour faire de l'espace selon les besoins, mais l'option 1 ajoutera un nombre aléatoire à la fin du nom du fichier pour garder les fichiers uniques. Il va également ajouter une extension de fichier qui est .tmp
par défaut, mais il peut être réglé à n'importe quoi via l'utilisation du 2nd paramètre. L'utilisation du nombre aléatoire signifie que malgré la spécification d'un nom de fichier il ne reste pas le même que le nombre est ajouté avec le suffixe/extension de fichier ( .tmp
par défaut) E. g vous spécifiez votre nom de fichier comme internal_file
et sort comme internal_file1456345.tmp
. Alors que vous pouvez spécifier l'extension vous ne pouvez pas spécifier le nombre qui est ajouté. Vous pouvez cependant trouver le nom de fichier qu'il génère via file.getName();
, mais vous aurez besoin de le stocker quelque part afin que vous puissiez l'utiliser quand vous le souhaitez pour exemple pour supprimer ou lire le fichier. Par conséquent, pour cette raison, je préfère la 2e option car le nom de fichier que vous spécifiez est le nom de fichier qui est créé.
vous pouvez utiliser le DIR de cache en utilisant le contexte .getCacheDir () .
File temp=File.createTempFile("prefix","suffix",context.getCacheDir());
vous pouvez utiliser la "méthode 151900920
https://developer.android.com/reference/java/io/File.html#deleteOnExit ()
il est référencé ici https://developer.android.com/reference/java/io/File.html#createTempFile (java.lang.Chaîne , java.lang.String, java.io.Dossier)