Il y a plusieurs choses:
1. getCacheDir() renvoie un répertoire *privé à l'application* ou elle peut coller des fichiers de cache. Ce répertoire est supprimé lors de la désinstallation de l'application, et *peut* être vidé par le système.
2. Il est normal de ne "pas voir" ce fichier, puisqu'il n'est ni indexé par le service multimédia du device, ni visible par l'utilisateur (sauf utilisation d'un explorateur en étant "root").
3. Le code est bizarre.. en tout cas j'ai l'impression que l'utilisation de createNewFile() est incomprise... Le but de createNewFile() est de permettre un test "atomique" de fichier (vis à vis du système d'exploitation). Le fichier n'existait pas, il existera désormais quelques soit les autres processus tentant d'y accéder...
1 2 3 4
|
if (file.createNewFile()) {
// ici... "file" n'existait pas avant .... et *personne* n'a pu le créer
} |
Le doubler avec un if (!file.exists()) est donc inutile.
De plus on est dans getCacheDir(), où un seul processus est capable d'écrire (normalement): l'application elle-même.. donc à moins de faire du multi-threading (mais un simple "synchronized" suffira) createNewFile n'est pas nécessaire.
Il y a aussi beaucoup de gens qui pensent que "createNewFile()" permet de créer un fichier... c'est faux...
La création de fichier se fait par simple ouverture de stream:
new FileOutputStream(file);
Partager