Fichier.createTempFile() VS new File()
Dans mon application, j'ai ajouté la possibilité d'ajouter et enregistrer des images pour tous les jours jour, représenté par un Fragment
.
Pour enregistrer l'image sur la carte SD, j'utilise actuellement la fonction File.createTempFile
:
File imageFile = File.createTempFile(imageFileName, MyApplication.JPEG_FILE_SUFFIX, MyApplication.getAlbumDir());
J'ai aussi essayé avec la méthode standard:
File imageFile = new File(MyApplication.getAlbumDir(), imageFileName + MyApplication.JPEG_FILE_SUFFIX);
Les deux travaillent, mais dans mon cas, le premier est mieux que le second, parce que la fonction createTempFile
ajoute un long nombre aléatoire à la fin du nom de fichier qui la rend unique.
Pour vous donner un exemple, voici ce que j'obtiens avec les deux méthodes:
Avec createTempFile: IMG_2013-06-18_-1961144729.jpg
Avec nouveau Fichier: IMG_2013-06-18_.jpg
Enfin ma question est, est-il sûr de garder à l'aide de createTempFile
pour enregistrer mes photos ou dois-je utiliser le mode standard et ajouter un peu de code pour générer un nom de fichier unique? Doit-il seulement être utilisé pour les fichiers temporaires?
J'ai passé en revue la documentation sur la fonction, mais je ne trouve rien sur les conséquences possibles de l'utiliser à la place de new File
.
Merci
Vous devez vous connecter pour publier un commentaire.
Semble que votre application est de créer de fichiers, vous avez besoin pour garantir un nom de fichier unique. Vous pouvez garder une sorte de compteur dans votre application (sauvegarde des préférences ou DB) et l'utiliser. Ensuite, vous pouvez créer plus court/plus contrôlée les noms, et le contrôle de l'unicité de vous-même. Ou vous pouvez utiliser createTempFile(), ce qui permettra de garantir que vous obtenez un nom de fichier unique (mais vous n'obtiendrez qu'un contrôle partiel du nom de fichier). On dirait que vous préférez createTempFile(), donc il n'y a aucune raison de ne pas continuer à l'utiliser si vous êtes heureux avec les noms de fichiers qu'il génère. Il n'y a pas de côté vers le bas d'autres que de ne pas avoir le plein contrôle sur le nom de fichier en format.
createTempFile
est de me donner les résultats que je veux, mais ma question est: est-il sécuritaire de continuer à utiliser cette fonction alors qu'en réalité, il semble être destiné à une fichier temporaire créations uniquement.Pour temporaire de fichiers internes qui leur sont 2 options
1.
2.
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éé.
1. Créer un fichier avec un nom aléatoire
2. Créer un fichier avec le nom exact
Créer le fichier sur le disque et qui retourne true si le fichier créé avec succès
Nom de fichier exactement comme passer à l'enfant paramètre
3. Créer qu'un seul fichier objet (dans la mémoire)
parent
paramètre peut être l'un de ces:Application répertoires privés
Les annuaires publics
De l'environnement.DIRECTORY_PICTURES)