package com.afollestad.silk.utilities; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.util.Log; import java.io.File; import java.io.FileOutputStream; /** * Handles writing/reading images to and from the external disk cache. * * @author Aidan Follestad */ public class DiskCache { private static File CACHE_DIR; private final Context context; public DiskCache(Context context) { this.context = context; setCacheDirectory(null); } public void put(String key, Bitmap image) throws Exception { File fi = getFile(key); Log.d("SilkImageManager.DiskCache", "Writing image to " + fi.getAbsolutePath()); FileOutputStream os = new FileOutputStream(fi); image.compress(key.endsWith(".png") ? Bitmap.CompressFormat.PNG : Bitmap.CompressFormat.JPEG, 100, os); } public Bitmap get(String key) { File fi = getFile(key); if (!fi.exists()) return null; return BitmapFactory.decodeFile(fi.getAbsolutePath()); } public File getFile(String key) { return new File(CACHE_DIR, key); } public void setCacheDirectory(File dir) { if (dir == null) { CACHE_DIR = context.getExternalCacheDir(); if (CACHE_DIR == null) CACHE_DIR = context.getCacheDir(); } else CACHE_DIR = dir; CACHE_DIR.mkdirs(); } }