2010-08-10 29 views
10

Cosa voglio fare: eliminare un file di immagine dalla memoria interna privata nella mia app. Salviamo le immagini nella memoria interna in modo che vengano eliminate sulla disinstallazione dell'app.Android: come eliminare il file di immagine interno

ho creato con successo e salvato:

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

un'immagine che ricevo attraverso

bitmap = BitmapFactory.decodeStream(inputStream); 

sono in grado di recuperare l'immagine in seguito per la visualizzazione:

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 ora voglio cancellare questo file in modo permanente. Ho provato a generare un nuovo file e di eliminarlo, ma il file non viene trovato:

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

Ho letto sul sito per gli sviluppatori Android che devo aprire i file interni privati ​​utilizzando il metodo openFileInput(...) che restituisce un InputStream permettendomi per leggere il contenuto, che non mi interessa davvero, voglio solo cancellarlo.

qualcuno può indicarmi la giusta direzione per l'eliminazione di un file archiviato nella memoria interna?

risposta

23

Erg, ho trovato la risposta da solo. Risposta semplice troppo :(

Tutto quello che dovete fare è chiamare il metodo deleteFile(imageName).

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

Fatto!

+1

Questo non funziona affatto. Immagine rimane nella galleria. File viene valutato correttamente come esistente, e quindi sto usando la tua linea sullo stesso file, ma quando torno alla galleria, è ancora lì. – Bisclavret

+1

@Bisclavret sei sicuro che il file è stato salvato nella memoria interna delle app? – binnyb

+0

Sto usando un diverso metodo ora, ma potrebbe essere stato perché non avevo le autorizzazioni WRITE_EXTERNAL_STORAGE attive nel Manifest. Grazie per la tua risposta e spero che questo aiuti qualcun altro. – Bisclavret

Problemi correlati