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, il n’est pas clair si les fichiers temporaires créés avec File.createTempFile sont supprimés, voire jamais.

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.

Meilleures pratiques sur les fichiers temporaires internes et externes :

Cache interne

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 dans lequel votre application doit enregistrer les fichiers de cache temporaires.

Lorsque le périphérique ne dispose plus d’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 pour nettoyer ces fichiers pour vous. Vous devez toujours conserver les fichiers de cache vous-même et restr dans une limite raisonnable d’espace consommé, par exemple 1 Mo. Lorsque l’utilisateur désinstalle votre application, ces fichiers sont supprimés.

Cache externe

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

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

Conseil: pour préserver l’espace disque et préserver les performances de votre application, il est important de gérer soigneusement vos fichiers de cache et de supprimer ceux qui ne sont plus nécessaires tout au long du cycle de vie de votre application.

Pour les fichiers internes temporaires, il y a 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 créer de l’espace, mais l’option 1 appenda un nombre aléatoire à la fin du nom de fichier pour conserver des fichiers uniques. Il appenda également une extension de fichier qui est .tmp par défaut, mais qui peut être définie par n’importe quel paramètre en utilisant le 2ème paramètre. L’utilisation du nombre aléatoire signifie que même si vous spécifiez un nom de fichier, il ne rest pas le même que celui ajouté avec l’extension suffixe / fichier ( .tmp par défaut), par exemple, vous spécifiez interne_fichier1456345.tmp . Alors que vous pouvez spécifier l’extension, vous ne pouvez pas spécifier le numéro ajouté. Vous pouvez cependant trouver le nom de fichier généré via file.getName(); , mais vous devrez le stocker quelque part pour pouvoir l’utiliser à tout moment par exemple pour supprimer ou lire le fichier. Par conséquent, pour cette raison, je préfère la 2ème option car le nom de fichier que vous spécifiez est le nom de fichier créé.

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

 File temp=File.createTempFile("prefix","suffix",context.getCacheDir()); 

Vous pouvez utiliser la méthode File.deleteOnExit()

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.Ssortingng , java.lang.Ssortingng, java.io.File)