2014-06-19 3 views
0

Actuellement, je sauvegarde les images que je télécharge sur Internet sur le disque. Je veux être en mesure de supprimer les images lorsque l'utilisateur ferme l'application. Je veux que les images soient toutes sauvegardées dans un dossier, il sera donc facile de les supprimer. J'ai fait getActivity().getCacheDir().getAbsolutePath()+ File.separator + "newfoldername" pour obtenir un chemin vers un dossier. Vous ne savez pas comment ajouter les images dans le dossier.Supprimer les images mises en cache du dossier

public void saveImage(Context context, Bitmap b, String name_file, String path) { 
    FileOutputStream out; 
    try { 
     out = context.openFileOutput(name_file, Context.MODE_PRIVATE); 
     b.compress(Bitmap.CompressFormat.JPEG,90, out); 
     out.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

public Bitmap getImageBitmap(Context context, String name) { 
    try { 
     FileInputStream fis = context.openFileInput(name); 
     final BitmapFactory.Options options = new BitmapFactory.Options(); 
     options.inSampleSize = 1; 
     Bitmap b = BitmapFactory.decodeStream(fis,null, options); 
     b.getAllocationByteCount()); 
     fis.close(); 
     return b; 
    } catch (Exception e) {} 
    return null; 
} 

Répondre

1

Vous ne devez pas enregistrer les images dans votre dossier cache car vous ne pouvez pas vous en remettre à la documentation. Une meilleure approche serait de les stocker sur votre carte SD. Selon la documentation:

public abstract File getCacheDir() 

Renvoie le chemin absolu du répertoire de l'application spécifique de cache sur le système de fichiers. Ces fichiers seront ceux qui seront supprimés en premier lorsque le périphérique sera à court de stockage. Il n'y a aucune garantie quand ces fichiers seront supprimés. Remarque: vous ne devez pas compter sur le système pour supprimer ces fichiers pour vous; vous devriez toujours avoir un maximum raisonnable, tel que 1 Mo, pour la quantité d'espace que vous consommez avec les fichiers de cache, et élaguer ces fichiers en dépassant cet espace.

POUR SAUVER

private String saveToInternalSorage(Bitmap bitmapImage){ 
    File directory = getApplicationContext().getDir("MY_IMAGE_FOLDER" 
    ,Context.MODE_PRIVATE); 

    File mypath=new File(directory,"profile.jpg"); 
    FileOutputStream fos = null; 
    try {   
     fos = new FileOutputStream(mypath); 
     bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fos); 
     fos.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return directory.getAbsolutePath(); 
} 

POUR LA LECTURE

private void loadImageFromStorage(String path) 
{ 
    try { 
     File file = new File(path, "Image.jpg"); 
     Bitmap bitmap = BitmapFactory.decodeStream(new FileInputStream(file)); 
     ImageView img = (ImageView)findViewById(R.id.my_imgView); 
     img.setImageBitmap(bitmap); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
} 

POUR SUPPRIMER:

String dir = getApplicationContext().getDir("MY_IMAGE_FOLDER" 
    ,Context.MODE_PRIVATE); 
if (dir.isDirectory()) { 
     String[] children = dir.list(); 
     for (int i = 0; i < children.length; i++) { 
      new File(dir, children[i]).delete(); 
     } 
    } 
+0

@Android Warrior - comment puis-je lire ces images? et comment puis-je supprimé le dossier lorsque l'application se ferme. – user3757801

+0

@ user3757801 Que voulez-vous dire en lisant les images? – CodeWarrior

+0

@ AndroidWarrior- comme obtenir un bitmap à partir de l'image enregistrée afin que je puisse l'afficher – user3757801

Questions connexes