2010-08-10 9 views
10

Ce que je veux faire: supprimer un fichier image du stockage interne privé dans mon application. Je sauvegarde les images dans le stockage interne afin qu'elles soient supprimées lors de la désinstallation de l'application.Android: comment supprimer le fichier image interne

J'ai créé avec succès et enregistré:

String imageName = System.currentTimeMillis() + ".jpeg"; 
FileOutputStream fos = openFileOutput(imageName, Context.MODE_PRIVATE); 
bitmap.compress(Bitmap.CompressFormat.JPEG, 35, fos); 

une image que je reçois par

bitmap = BitmapFactory.decodeStream(inputStream); 

Je suis en mesure de récupérer l'image plus tard pour l'affichage:

FileInputStream fis = openFileInput(imageName); 
ByteArrayOutputStream bufStream = new ByteArrayOutputStream(); 
DataOutputStream outWriter = new DataOutputStream(bufStream); 

int ch; 
while((ch = fis.read()) != -1) 
    outWriter.write(ch); 

outWriter.close(); 
byte[] data = bufStream.toByteArray(); 
bufStream.close(); 
fis.close(); 

imageBitmap = BitmapFactory.decodeByteArray(data, 0, data.length); 

I maintenant voulez supprimer définitivement ce fichier. J'ai essayé de créer un nouveau fichier et de le supprimer, mais le fichier est introuvable:

File file = new File(imageName); 
file.delete(); 

J'ai lu sur le site du développeur Android que je dois ouvrir des fichiers internes privés en utilisant la méthode openFileInput(...) qui renvoie un InputStream me permettant pour lire le contenu, dont je ne me soucie pas vraiment - je veux juste le supprimer.

Quelqu'un peut-il me diriger dans la bonne direction pour la suppression d'un fichier qui est stocké dans le stockage interne?

Répondre

23

Erg, j'ai trouvé la réponse moi-même. Réponse simple trop :(

Tout ce que vous avez à faire est d'appeler la

+1

méthode deleteFile(imageName).

if(activity.deleteFile(imageName)) Log.i(TAG, "Image deleted."); 

Fait! Cela ne fonctionne pas du tout. L'image reste encore dans la galerie. Le fichier est signalé correctement comme existant, et puis j'utilise votre ligne sur le même dossier, mais quand je retourne à la galerie, il est toujours là – Bisclavret

+1

@Bisclavret êtes-vous sûr que le dossier est sauvé au stockage interne d'application? – binnyb

+0

J'utilise un différent méthode maintenant, mais peut-être parce que je n'avais pas d'autorisations WRITE_EXTERNAL_STORAGE actives dans le manifeste. pour votre réponse et j'espère que cela aide quelqu'un d'autre. – Bisclavret

Questions connexes