Android本地缓存图片示例代码

来源:互联网 发布:粉红色的火烈鸟 知乎 编辑:程序博客网 时间:2024/06/16 12:34

本地缓存工具类

public class LocalCacheUtils {    private static final String LOCAL_CACHE_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "/xxx_cache";    // 写本地缓存    public void setLocalCache(String url, Bitmap bitmap) {        File dir = new File(LOCAL_CACHE_PATH);        if (!dir.exists() || !dir.isDirectory()) {            dir.mkdirs();  // 创建文件夹        }        try {            String fileName = MD5Encoder.encode(url);            File cacheFile = new File(dir, fileName);            bitmap.compress(CompressFormat.JPEG, 100, new FileOutputStream(cacheFile));            // 参1:图片格式;参2:压缩比例0-100; 参3:输出流        } catch (Exception e) {            e.printStackTrace();        }    }    // 读本地缓存    public Bitmap getLocalCache(String url) {        try {            File cacheFile = new File(LOCAL_CACHE_PATH,MD5Encoder.encode(url));            if (cacheFile.exists()) {                Bitmap bitmap = BitmapFactory.decodeStream(new FileInputStream(cacheFile));                return bitmap;            }        } catch (Exception e) {            e.printStackTrace();        }        return null;    }}

MD5工具类


public class MD5Encoder {

public static String encode(String string) throws Exception {    byte[] hash = MessageDigest.getInstance("MD5").digest(string.getBytes("UTF-8"));    StringBuilder hex = new StringBuilder(hash.length * 2);    for (byte b : hash) {        if ((b & 0xFF) < 0x10) {            hex.append("0");        }        hex.append(Integer.toHexString(b & 0xFF));    }    return hex.toString();}

}