Suppression de fichiers créés avec FileOutputStream
Je suis en développement pour la plateforme Android.
Mon application crée un fichier temporaire avec un simple appel à:
FileOutputStream fos = openFileOutput("MY_TEMP.TXT", Mode);
Cela fonctionne bien parce que je peux écrire et lire normalement.
Le problème est que lorsque je l'ai sortie de l'application que je veux supprimer ce fichier. J'ai utilisé:
File f = new File(System.getProperty("user.dir"), "MY_TEMP.TXT");
f.delete()
Mais il renvoie toujours false et le fichier n'est pas supprimé.
J'ai essayé:
File f = new File("MY_TEMP.TXT");
f.delete();
Et il ne fonctionne pas non plus.
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
J'ai vérifié sur cet affichage et la meilleure façon de supprimer un fichier créé à partir de FileOutputStream est un simple appel à partir du Contexte de la méthode deleteFile(TEMP_FILE) aussi simple que cela.
Vous ne pouvez pas supprimer un fichier ouvert. Vous avez besoin de fermer le flux de données avant de les supprimer.
Cela dit, je préfère utiliser
Fichier#createTempFile()
de laisser la plateforme sous-jacente faire le nettoyage automatique et éviter potentiel de transférabilité des problèmes causés par l'utilisation de chemins relatifs dans lesFile
.Double-vérifier, si le Flux est fermé avant d'essayer de supprimer le fichier.
Vous avez quelques réponses concrètes déjà, mais je veux juste mentionner que
File.deleteOnExit()
qui planifie un fichier pour la suppression lors de la VM sorties.--edit--
Vous toujours devez fermer toutes les ruisseaux connecté au fichier.
vous devez fermer le fichier avant de le supprimer. l'utilisation de code ci-dessous.